ios Xcode 15没有反映故事板中使用的字体

ckx4rj1h  于 12个月前  发布在  iOS
关注(0)|答案(3)|浏览(232)

我把Xcode更新到了15版。
我的问题是,当我在iOS设备和模拟器上运行我的应用程序时,我通过故事板设置的字体不能正确反映。有人知道为什么吗?
我知道一个解决办法是以编程方式设置字体,正如我发现的那样,苹果在他们的发行说明中描述了这一点,但我 * 真的 * 希望避免这种情况,如果一个不那么乏味的解决方案碰巧存在!

qvtsj1bj

qvtsj1bj1#

我所做的是为UILabel/UIButtonUITextField创建一个扩展,并通过@IBInspectable将其暴露给故事板,在那里我传递了我需要的给定自定义字体的大小。然后你从故事板或xib设置它,它应该像编程添加的那样工作。

extension UIButton {
    @IBInspectable
    var robotoMedium: CGFloat {
        set {
            titleLabel?.font = UIFont(name: "Roboto-Medium", size: newValue)
        }
        get {
            return 0.0
        }
    }
    
    @IBInspectable
    var robotoNormal: CGFloat {
        set {
            titleLabel?.font = UIFont(name: "Roboto-Regular", size: newValue)
        }
        get {
            return 0.0
        }
    }
    
    @IBInspectable
    var robotoBold: CGFloat {
        set {
            titleLabel?.font = UIFont(name: "Roboto-Bold", size: newValue)
        }
        get {
            return 0.0
        }
    }
}
btxsgosb

btxsgosb2#

不幸的是,正如你所说的,这是一个known issue in Xcode 15,因为早期的测试版,并仍然存在于正式发布。
使用自定义应用程序字体的Interface Builder文档可能会在运行时加载错误的字体。(113624207)(FB12903371)
解决办法:在代码中手动设置字体。
我当然希望修复很快就会到来,但由于他们现在似乎把精力集中在SwiftUI上,这可能需要时间。
目前仅有的解决方法是:

  • 在代码中设置自定义字体(你可以编写一个UILabel/UIButton子类,通过阅读“用户定义的字体属性”来设置字体,这样你就不必用字体来污染你的所有类)
  • 继续使用Xcode 14(注意不要更新到MacOS索诺马,否则你将无法再使用Xcode 14)
abithluo

abithluo3#

https://developer.apple.com/documentation/xcode-release-notes/xcode-15_0_1-release-notes
in xcode 15.0.1 -> Interface Builder Resolved Issues修复了使用自定义应用字体的Interface Builder文档在运行时加载不正确字体的问题。(116019276)

相关问题