XCode - 在Storyboard中更改默认全局字体

tik*_*ika 11 xcode storyboard ios

非常类似于我们如何在Storyboard中设置Global Tint,是否可以将全局字体系列设置为其他内容?例如,我想将系统中的全局/默认字体更改为Source Sans Pro 16pt.但是,我必须做的(据我所知)是以下之一:

  1. 在Storyboard中更改每个标签,按钮,textField等的字体.
  2. 通过Swift ViewDidLoad Code(如此问题)或通过本问题中解释的扩展来设置它

我对(2)的问题是我没有使用故事板获得像(1)中的视觉反馈.另一方面,它也不是很有说服力,因为无论如何我必须手动设置它.

那么,有没有办法更改/设置默认的Storyboard字体?

Car*_*Zyl 8

您可以使用 Appearance API,以确保所有控件具有相同的字体(在运行时)

看看这个问题如何为 UIButton 设置具有外观的字体。

对于 UILabel 和 UITextView,请执行以下操作。这可以在 AppDelegate 中完成application(_:didFinishLaunchingWithOptions:)

let labelAppearance = UILabel.appearance()
labelAppearance.font = UIFont.myFont()

let textFieldAppearance = UITextView.appearance()
textFieldAppearance.font = UIFont.myFont()
Run Code Online (Sandbox Code Playgroud)

但是,以前的解决方案不会更新故事板。

要在故事板上直观地查看更改,您可以查看功能

prepareForInterfaceBuilder()
Run Code Online (Sandbox Code Playgroud)

是一个解释如何在情节提要中对其进行视觉更新的答案,但为此,您需要为文本字段、按钮等使用自定义类。

上面链接中的代码示例:

@IBDesignable
public class MyUILabel: UILabel {

    public override func awakeFromNib() {
        super.awakeFromNib()
        configureLabel()
    }

    public override func prepareForInterfaceBuilder() {
        super.prepareForInterfaceBuilder()
        configureLabel()
    }

    func configureLabel() {
        font = UIFont(name: Constants.DefaultFont, size: 40)
    }

}
Run Code Online (Sandbox Code Playgroud)