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 - 在情节提要中更改默认全局字体的主要内容,如果未能解决你的问题,请参考以下文章