Swift开发如何在Storyboard中实现UIButton单角圆角效果
原生Storyboard没有提供直接设置单角圆角的可视化选项,你可以通过给UIView添加可被Interface Builder识别的扩展属性,直接在Storyboard面板里配置任意角的圆角效果,操作步骤如下:
- 第一步:添加扩展代码
在项目中任意Swift文件内粘贴以下代码,这段代码会给所有继承自UIView的控件(包括UIButton)增加可在Storyboard属性面板配置的圆角参数:
import UIKit extension UIView { @IBInspectable var cornerRadius: CGFloat { get { layer.cornerRadius } set { layer.cornerRadius = newValue layer.masksToBounds = newValue > 0 } } @IBInspectable var topLeftRounded: Bool { get { layer.maskedCorners.contains(.layerMinXMinYCorner) } set { if newValue { layer.maskedCorners.insert(.layerMinXMinYCorner) } else { layer.maskedCorners.remove(.layerMinXMinYCorner) } } } @IBInspectable var topRightRounded: Bool { get { layer.maskedCorners.contains(.layerMaxXMinYCorner) } set { if newValue { layer.maskedCorners.insert(.layerMaxXMinYCorner) } else { layer.maskedCorners.remove(.layerMaxXMinYCorner) } } } @IBInspectable var bottomLeftRounded: Bool { get { layer.maskedCorners.contains(.layerMinXMaxYCorner) } set { if newValue { layer.maskedCorners.insert(.layerMinXMaxYCorner) } else { layer.maskedCorners.remove(.layerMinXMaxYCorner) } } } @IBInspectable var bottomRightRounded: Bool { get { layer.maskedCorners.contains(.layerMaxXMaxYCorner) } set { if newValue { layer.maskedCorners.insert(.layerMaxXMaxYCorner) } else { layer.maskedCorners.remove(.layerMaxXMaxYCorner) } } } }
- 第二步:在Storyboard中可视化配置
选中目标按钮,打开右侧的属性检查器面板,就能看到新增的圆角配置项:- 给
cornerRadius设置你需要的圆角数值,比如示例中的10 - 要实现仅左侧圆角、右侧直角的效果,只需要勾选
topLeftRounded和bottomLeftRounded,取消另外两个角的勾选即可 - 你也可以根据需求自由组合需要添加圆角的角,配置完成后Xcode会实时渲染效果,不需要额外编写业务代码
- 给

提示:该实现基于
maskedCorners属性,最低支持iOS 11系统。如果需要兼容iOS 10及更早版本,可以通过UIBezierPath(roundedRect:byRoundingCorners:cornerRadii:)方法自定义绘制圆角路径。
内容的提问来源于stack exchange,提问作者beep
相关产品推荐
相关产品推荐

