微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Swift不在乎字体名称的大写吗?

如何解决Swift不在乎字体名称的大写吗?

我写的代码可以简单地返回可以这样使用的UIFont

myLabel.font = UIFont.AppleSDGothicNeo.medium.of(20)

实际的实现是这样的

extension UIFont {
    enum AppleSDGothicNeo: CustomFont {
        var familyName: String {
            return "AppleSDGothicNeo-"
        }
        
        case thin
        case light
        case regular
        case bold
        case semiBold
        case ultraLight
        case medium
    }
}

protocol CustomFont {
    var familyName : String { get }
    func of(_ size: CGFloat) -> UIFont
}

extension CustomFont {
    func of(_ size: CGFloat) -> UIFont {
        let name = familyName+String(describing: self)
        guard let font = UIFont(name: name,size: size) else {
            fatalError("Could not find Custom Font \(self)")
        }
        return font
    }
}

如您所见,我通过使用String(describing: self)获得了字体名称。如果使用medium,它将返回带有其familyName的“ AppleSDGothicNeo-medium”。

但是当我打印出实际的字体名称时,它表示“ AppleSDGothicNeo-Medium”。尽管M是大写字母,但可以与“ AppleSDGothicNeo-medium”一起使用。

所以.. Swift不在乎字体名称的大写吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。