【发布时间】:2015-07-27 13:06:47
【问题描述】:
所以我将在应用程序中使用几个不同的圆形按钮(一直到圆形按钮),据我所知,实现这一点的最简单方法是设置按钮 CALayer 的cornerRadius 属性。
但是,我不想为每个控制器中需要它的每个按钮手动执行此操作,因此我认为在 init 上设置它的简单子类将是方法。
我正在使用 Storyboard 和 Autolayout 来定位和调整按钮的大小,并将它们分配给这个子类。
class RoundedButton: UIButton {
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.layer.cornerRadius = self.bounds.size.height / 2.0
self.clipsToBounds = true
NSLog("BUTTON BOUNDS: H-%f W-%f", self.bounds.size.height, self.bounds.size.width)
NSLog("BUTTON FRAME: H-%f W-%f", self.frame.height, self.frame.width)
}
}
但我发现在这一点上(即 init),框架和边界的大小都不是最终的。对于 Storyboard 中大小(和约束)为 H40 x W40 的按钮,边界/帧大小显示为 H30 x W38。
这意味着cornerRadius没有得到我期望的值。
我已经确认在稍后的某个时间点(例如,当按钮已经可以响应点击时)它的框架/边界确实是 H40 x W40。
毕竟,我的问题是,在 UIButton 子类中,何时/在何处可以使用实例的最终帧/边界值安全地设置cornerRadius?
【问题讨论】:
标签: ios iphone swift uibutton calayer