很多像这样的问题解释了如何以编程方式创建一个蒙版并为UIView提供圆角.
有没有办法在Storyboard中完成所有操作?只是因为看起来像在Storyboard中创建圆角似乎在表示和逻辑之间保持更清晰的界限.
是的,我经常使用它,但像这样的问题已经多次回答了.
但无论如何在Interface Builder中.您需要添加如下所示的用户定义的运行时属性:
layer.masksToBounds Boolean YES layer.cornerRadius Number {View's Width/2}
并启用
Clips subviews
结果:
您可以使用用户定义的属性在故事板中执行此操作.选择要舍入的视图并打开其Identity Inspector.在" 用户定义的运行时属性"部分中,添加以下两个条目:
关键路径:layer.cornerRadius
,类型:数字,值:(您想要的任何半径)
键路径:layer.masksToBounds
,类型:布尔值,值:已选中
您可能必须QuartzKit
在视图中导入相应的类文件(如果有的话),但我发誓我没有这样做就能让它工作.您的结果可能会有所不
编辑:动态半径的示例
extension UIView { /// The ratio (from 0.0 to 1.0, inclusive) of the view's corner radius /// to its width. For example, a 50% radius would be specified with /// `cornerRadiusRatio = 0.5`. @IBDesignable public var cornerRadiusRatio: CGFloat { get { return layer.cornerRadius / frame.width } set { // Make sure that it's between 0.0 and 1.0. If not, restrict it // to that range. let normalizedRatio = max(0.0, min(1.0, newValue)) layer.cornerRadius = frame.width * normalizedRatio } } }
我证实这适用于游乐场.
选择视图
extension UIView { @IBInspectable var cornerRadiusV: CGFloat { get { return layer.cornerRadius } set { layer.cornerRadius = newValue layer.masksToBounds = newValue > 0 } } @IBInspectable var borderWidthV: CGFloat { get { return layer.borderWidth } set { layer.borderWidth = newValue } } @IBInspectable var borderColorV: UIColor? { get { return UIColor(cgColor: layer.borderColor!) } set { layer.borderColor = newValue?.cgColor } } }