Добавление значка на круглую кнопку - Swift - PullRequest
0 голосов
/ 14 июля 2020

Я хотел бы разместить красную точку внизу как значок всегда в верхнем правом углу кнопки. 1005 * введите описание изображения здесь

Как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 14 июля 2020

Вы можете использовать ограничения, чтобы выровнять представление по верхнему правому краю супервизора. Добавьте badgeView в UIButton, как показано ниже. Вы можете играть с константами.

// your button
let buttonSize: CGFloat = 50
let button = UIButton(frame: CGRect(x: 0, y: 0, width: buttonSize, height: buttonSize))
button.layer.backgroundColor = UIColor.black.cgColor
button.layer.cornerRadius = buttonSize / 2

// your badge view (use UIView instead of UIButton)
let badgeSize: CGFloat = 16
let badgeView = UIView()
badgeView.backgroundColor = UIColor(red: 235/255, green: 68/255, blue: 90/255, alpha: 1)
badgeView.layer.cornerRadius = badgeSize / 2
button.addSubview(badgeView)

// set constraints
badgeView.translatesAutoresizingMaskIntoConstraints = false
let constraints: [NSLayoutConstraint] = [
    badgeView.rightAnchor.constraint(equalTo: button.rightAnchor, constant: -4),
    badgeView.topAnchor.constraint(equalTo: button.topAnchor, constant: 0),
    badgeView.widthAnchor.constraint(equalToConstant: badgeSize),
    badgeView.heightAnchor.constraint(equalToConstant: badgeSize)
]
NSLayoutConstraint.activate(constraints)

введите описание изображения здесь

1 голос
/ 14 июля 2020

Если размеры значка и кнопки, на которой находится значок, являются постоянными, рамка значка должна быть:

CGRect(x: radius * cos45 + radius, y: radius - radius * cos45, width: 0, height: 0).insetBy(dx: -8, dy: -8)

, где cos45 - это sqrt(2) / 2, а radius - это радиус черной кнопки. Это нарисует значок с центром на окружности кнопки.

let cos45 = sqrt(2) / 2
let badgeView = UIButton (frame: CGRect(x: radius * cos45 + radius, y: radius - radius * cos45, width: 0, height: 0).insetBy(dx: -8, dy: -8))
// make badgeView look pretty...
self.addSubview (badgeview)

Мне кажется, что использовать UIButton для значка немного странно, если только нажатие на значок не делает что-то отличное от нажатия на кнопка. В противном случае вы можете просто использовать обычный UIView.

...