我的目标是创建一个带有全圆角的按钮(每边各半个圆)。它应该看起来像这样:
在用户定义的运行时属性中,我将 layer.cornerRadius 设置为 KeyPath,并将 50 设置为 Value(也尝试过设置为 49)。此外,我已将“剪辑 subview ”选项设置为是(如在这个答案中:UIlabel layer.cornerRadius not working in iOS 7.1) 然而,编译结果在我的 iPhone 5c (iOS 9.2.1) 上看起来像这样:
(图片是在 photoshop 中制作的,但它看起来就是这样)
角是圆的,但显然缺少 anchor 。关于如何获得预期结果的任何建议?
最佳答案
cornerRadius
值不会根据按钮高度自动更新,因此,当从 Storyboard/xib 指定它时,您必须确保该值恰好是按钮高度的一半。
通常这是通过将按钮高度设置为常数(使用高度约束)并将 cornerRadius
设置为该常数的一半来实现的(例如,对于您想要的高度 100
cornerRadius
,值为 50
)。
如果你想要一个自动更新的解决方案,最简单的解决方案是继承 UIButton
并覆盖 layoutSubviews
:
override func layoutSubviews() {
super.layoutSubviews()
self.layer.cornerRadius = self.frame.size.height / 2.0
}
然后在 xib/storyboard 中,您可以将按钮的类更改为您的自定义类。
关于swift - 将 50 的 layer.cornerRadius 应用于按钮时出现奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35898599/