Swift | 关于 struct 的一些优雅实践

之前已经说过了,寻求优雅的最佳捷径就是细品苹果的代码

1. 细品苹果的代码

下面这段代码,写过富文本的肯定都不陌生:

NSAttributedString.Key.foregroundColor

其中的Key就是一个 struct:

extension NSAttributedString {

    public struct Key : Hashable, Equatable, RawRepresentable {

        public init(_ rawValue: String)

        public init(rawValue: String)
    }
}

foregroundColorNSAttributedString.Key扩展的属性。

extension NSAttributedString.Key {

    /************************ Attributes ************************/

    @available(iOS 6.0, *)
    public static let foregroundColor: NSAttributedString.Key // UIColor, default blackColor

}

2. 优雅实践

举个例子,想必不少人实际开发中都添加过自定义字体,添加完后,可以直接使用,如:

let font = UIFont.init(name: "CustomFontName", size: 20)

这样写没问题,但是硬编码着实有点蛋疼。

于是仿照苹果的NSAttributedString.Key.foregroundColor践行了一波优雅:

extension UIFont {
    
    struct Name {
        
    }
    
}

extension UIFont.Name {
    
    static let SFProText_Heavy = "SFProText-Heavy"
    static let SFProText_LightItalic = "SFProText-LightItalic"
    static let SFProText_HeavyItalic = "SFProText-HeavyItalic"
    
}

但我觉得没必要照搬,所以稍微改了一下结构:

extension UIFont {
    
    struct Name {
        static let SFProText_Heavy = "SFProText-Heavy"
        static let SFProText_LightItalic = "SFProText-LightItalic"
        static let SFProText_HeavyItalic = "SFProText-HeavyItalic"
    }
    
}

使用都是一样的:

let font = UIFont.init(name: UIFont.Name.SFProText_Heavy, size: 20)

就问你这种写法爽不爽?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

祖安狂人学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值