ios – 根据子类中的UIButton大小设置cornerRadius的最佳位置?

ios – 根据子类中的UIButton大小设置cornerRadius的最佳位置?,第1张

概述所以我将在应用程序中有一些不同的圆形按钮(一直到圆形按钮),从我所知,最简单的方法是设置按钮CALayer的cornerRadius属性. 但是,我不想为每个控制器中需要它的每个按钮手动执行此 *** 作,因此我认为在init上设置此类的简单子类就是这样. 我正在使用Storyboard和Autolayout来定位和调整按钮的大小,并将它们分配给这个子类. class RoundedButton: UIB 所以我将在应用程序中有一些不同的圆形按钮(一直到圆形按钮),从我所知,最简单的方法是设置按钮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)    }}

但是我已经发现,在这一点上(即初始化),框架和边界的大小都不是最终的.对于故事板中尺寸(和约束)为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的最佳位置?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1108637.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存