【发布时间】:2016-06-24 05:47:43
【问题描述】:
我的目标是创建一个带有完全圆角的按钮(每边半圆)。它应该看起来像这样:
在用户定义的运行时属性中,我将 layer.cornerRadius 设置为 KeyPath,将 50 设置为 Value(也尝试了 49)。此外,我已将“剪辑子视图”选项设置为是(如在此答案中:UIlabel layer.cornerRadius not working in iOS 7.1) 但是,编译结果在我的 iPhone 5c (iOS 9.2.1) 上看起来像这样:
(图片是用 Photoshop 制作的,但看起来就是这样)
角是圆形的,但显然缺少一个锚点。有关如何获得所需结果的任何建议?
【问题讨论】:
-
确保您的按钮类型为
.Custom,并且高度正好为cornerRadius * 2。您可能希望按钮具有高度限制。如果cornerRadius是50,那么你的按钮应该有高度100。 -
@Sulthan 非常感谢,这解决了问题——我想我已经习惯了用 css 做这些事情的方式。有没有办法使用百分比而不是固定数字?如果我的身高发生变化,我希望采用更动态的方法。
-
有多种方法可以做到这一点。您可以将
cornerRadius设置移动到代码中,但您必须注意布局更改并在必要时更新值。您还可以创建一个自定义的UIButton子类来执行此操作(并更改layoutSubviews中的cornerRadius值)。在大多数情况下,您不希望按钮高度发生变化,因此在 storyboard/xib 中显式设置它是没有问题的。
标签: swift cocoa-touch uibutton storyboard