Если размеры значка и кнопки, на которой находится значок, являются постоянными, рамка значка должна быть:
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
.