
但是,我不想为每个控制器中需要它的每个按钮手动执行此 *** 作,因此我认为在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) }} 但是我已经发现,在这一点上(即初始化),框架和边界的大小都不是最终的.对于故事板中尺寸(和约束)为H40 x W40的按钮,边界/框架尺寸显示为H30 x W38.
这意味着cornerRadius没有得到我期望的值.
我已经确认在稍后的某个时间点(例如,当按钮已经响应敲击时)其帧/边界确实是H40 x W40.
毕竟,我的问题是,在UIbutton子类中,何时/哪里可以使用实例的最终帧/边界值安全地设置cornerRadius?
解决方法 如果您希望在视图通过autoLayout后执行代码,则必须在调用super.layoutSubvIEws()后在layoutSubvIEws中执行此 *** 作.像这样 :
class Roundedbutton: UIbutton { overrIDe func layoutSubvIEws() { super.layoutSubvIEws() layer.cornerRadius = bounds.size.height / 2.0 clipsToBounds = true }} 这段代码并不完美,因为当高度大于宽度时它不支持(虽然容易修复……).
总结以上是内存溢出为你收集整理的ios – 根据子类中的UIButton大小设置cornerRadius的最佳位置?全部内容,希望文章能够帮你解决ios – 根据子类中的UIButton大小设置cornerRadius的最佳位置?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)