我创建了UIButton
的子类。此子类(BubbleBtn
)负责向按钮添加UIView
。
添加的视图应该是从顶部,左侧和右侧6个点,而跨越父按钮高度的一半。
代码:
class BubbleBtn: UIButton {
override init(frame: CGRect) {
super.init(frame: frame)
addBubbleView()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
addBubbleView()
}
func addBubbleView() {
setNeedsLayout()
layoutIfNeeded()
let bubbleBuffer:CGFloat = 6
let bubble = UIView(frame: CGRect(x: bubbleBuffer, y: bubbleBuffer, width: self.frame.width - (bubbleBuffer * 2), height: (self.frame.height / 2)))
bubble.isUserInteractionEnabled = false
bubble.backgroundColor = UIColor(red: 1, green: 1, blue: 1, alpha: 0.5)
bubble.layer.cornerRadius = 10
bubble.layer.zPosition = -1
self.addSubview(bubble)
}
}
问题是,添加的UIView
的宽度和高度不正确;大按钮的宽度和高度都会缩短。
如何将UIView添加到按钮中,以便气泡视图呈现适当的大小?
下面发布的截图:
答案 0 :(得分:1)
您应该根据超级视图的bounds
和正确的autoresizingMask
设置框架。
let bubble = UIView(frame: CGRect(x: bubbleBuffer, y: bubbleBuffer,
width: self.bounds.width - (bubbleBuffer * 2),
height: self.bounds.height - (2 * bubbleBuffer))
bubble.translatesAutoresizingMaskIntoConstraints = true
bubble.autoresizingMask = [ .flexibleWidth, .flexibleHeight ]
当超级视图的bubble
发生变化时,frame
会调整其宽度。
答案 1 :(得分:1)
尝试为按钮内的视图添加约束。
{{1}}