XCode - 在情节提要中更改默认全局字体

Posted

技术标签:

【中文标题】XCode - 在情节提要中更改默认全局字体【英文标题】:XCode - Change Default Global Font in Storyboard 【发布时间】:2016-10-14 04:45:18 【问题描述】:

很像我们如何在 Storyboard 中设置 全局色调,是否可以将全局字体系列设置为其他内容? 例如,我想将 Global/Default Font 从 System 更改为 Source Sans Pro 16pt。但是,我必须做的(据我所知)是以下之一:

    更改 Storyboard 中每个标签、按钮、文本字段等的字体。 通过 Swift ViewDidLoad 代码(如this question)或通过扩展设置它,如this question 中所述

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

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

【问题讨论】:

抱歉,您必须手动设置所有标签、按钮等的字体。如果您制作一个 globalConstants.h 文件,请声明一个字体变量,例如 let ICON_FONT = UIFont(name: "OpenSans-Bold" size: 30) 并手动为每个标签指定字体。所以现在如果你改变字体,只需改变 globalConstant 文件。 【参考方案1】:

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

看看这个question如何设置UIButton with Appearance的字体。

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

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

let textFieldAppearance = UITextView.appearance()
textFieldAppearance.font = UIFont.myFont()

但之前的解决方案不会更新情节提要。

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

prepareForInterfaceBuilder()

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

上面链接的代码示例:

@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)
    


【讨论】:

但是在自定义MyUILabel的情况下,您将不得不更改所有UILabels的类,对吧?是不是像改变所有标签的字体一样重复? 这个答案不只是对OP编号的更详细解释吗? 2?除了 IB 部分,但就像 tika 所说的,没有太多的附加值。 @tika 可能是一样的重复(虽然我的看法是改类比改字体+大小要快),但是你赢的就是当你想改字体的时候整个应用程序,您可以在一个地方完成。

以上是关于XCode - 在情节提要中更改默认全局字体的主要内容,如果未能解决你的问题,请参考以下文章

使用情节提要的自定义字体 Xcode 4.6

ios8/xcode6.1:在情节提要中设置时在运行时忽略自定义字体

使用 xcode 9.2 的情节提要中的不一致错误

无法在 Xcode 11 beta 中选择自定义字体?

在 Xcode 8.2 中设置特定于设备的字体

Xcode Storyboard - 如何在不同的 iPhone 屏幕尺寸之间更改元素的字体大小和位置