我的目标是创建一个完全圆角的按钮(每边半个圆)。应该是这样的:
swift - 在按钮上应用layer.cornerRadius 50时的结果很奇怪-LMLPHP
在用户定义的运行时属性中,我将layer.cornerRadius设置为KeyPath,将50设置为Value(也尝试了49)。此外,我还将“Clip Subviews”选项设置为yes(如下面的回答:UIlabel layer.cornerRadius not working in iOS 7.1
不过,在我的iPhone 5c(iOS 9.2.1)上,编译的结果如下:
swift - 在按钮上应用layer.cornerRadius 50时的结果很奇怪-LMLPHP
(图片是用photoshop制作的,但这就是它的样子)
角落是圆的,但显然有一个主播失踪。对如何取得预期的结果有什么建议吗?

最佳答案

根据按钮高度,cornerRadius值不会自动更新,因此,当从StyBooTe/XIB中指定它时,必须确保该值正好是按钮高度的一半。
通常,这是通过将按钮高度设置为常数(使用高度约束)并将cornerRadius设置为该常数的一半(例如,对于高度100您希望cornerRadius具有值50)来实现的。
如果需要自动更新解决方案,最简单的解决方案是对UIButton进行子类划分并覆盖layoutSubviews

override func layoutSubviews() {
   super.layoutSubviews()

   self.layer.cornerRadius = self.frame.size.height / 2.0
}

然后在XB/SturyBooad中,您可以将按钮的类更改为自定义类。

关于swift - 在按钮上应用layer.cornerRadius 50时的结果很奇怪,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35898599/

10-10 11:52