You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift开发如何在Storyboard中实现UIButton单角圆角效果

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 22:45:38