HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 根据子类中的UIButton大小设置cornerRadius的最佳位置?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我将在应用程序中有一些不同的圆形按钮(一直到圆形按钮),从我所知,最简单的方法是设置按钮CALayer的cornerRadius属性. @H_674_2@但是,我不想为每个控制器中需要它的每个按钮手动执行此操作,因此我认为在init上设置此类的简单子类就是这样.

@H_674_2@我正在使用Storyboard和Autolayout来定位和调整按钮的大小,并将它们分配给这个子类.

@H_874_6@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) } } @H_674_2@但是我已经发现,在这一点上(即初始化),框架和边界的大小都不是最终的.对于故事板中尺寸(和约束)为H40 x W40的按钮,边界/框架尺寸显示为H30 x W38.

@H_674_2@这意味着cornerRadius没有得到我期望的值.

@H_674_2@我已经确认在稍后的某个时间点(例如,当按钮已经响应敲击时)其帧/边界确实是H40 x W40.

@H_674_2@毕竟,我的问题是,在UIButton子类中,何时/哪里可以使用实例的最终帧/边界值安全地设置cornerRadius?

解决方法

如果您希望在视图通过AutoLayout后执行代码,则必须在调用super.layoutSubviews()后在layoutSubviews中执行此操作. @H_674_2@像这样 :

@H_874_6@class RoundedButton: UIButton { override func layoutSubviews() { super.layoutSubviews() layer.cornerRadius = bounds.size.height / 2.0 clipsToBounds = true } } @H_674_2@这段代码并不完美,因为当高度大于宽度时它不支持(然容易修复……).

大佬总结

以上是大佬教程为你收集整理的ios – 根据子类中的UIButton大小设置cornerRadius的最佳位置?全部内容,希望文章能够帮你解决ios – 根据子类中的UIButton大小设置cornerRadius的最佳位置?所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。