如果我为标签字体使用外观代理,我无法通过 Interface Builder 设置字体大小

Posted

技术标签:

【中文标题】如果我为标签字体使用外观代理,我无法通过 Interface Builder 设置字体大小【英文标题】:If I use an appearance proxy for label font, I can't set font size via Interface Builder 【发布时间】:2014-02-24 11:57:03 【问题描述】:

我通过应用代理中的外观代理为所有标签设置自定义字体。像这样 [[UILabel appearance] setFont:[UIFont fontWithName:@"Open Sans" size:18.0]];

但现在我遇到了一个问题:我无法通过 Interface Builder 设置字体大小(如果我设置它,什么都不会改变,外观代理设置将应用)。我只想设置一个字体名称,但要能够在 IB 中更改字体大小。

有谁知道如何修复它或解决它?

感谢任何帮助。

【问题讨论】:

其实这个问题真的很好。我对 何时 应用外观代理感兴趣,因为我正在继承 UIView 并且似乎无法设置我想要的值。 这一切背后的真正问题是字体和字体大小之间没有分离。如果 Apple 打破这种联系,每个人的代码都会变得更简洁。 【参考方案1】:

如果您通过外观代理覆盖它们,IB 字体设置将不起作用。您必须在代码中设置其他字体,没有解决方法。如果您有大量标签需要在同一视图控制器的范围内更改其字体,您可以使用它们创建一个插座集合并在viewDidLoad 方法中循环它们。

【讨论】:

以上是关于如果我为标签字体使用外观代理,我无法通过 Interface Builder 设置字体大小的主要内容,如果未能解决你的问题,请参考以下文章

UIBarButtonItem 外观代理设置字体属性在 iOS 11 中不起作用

重置文本时覆盖外观代理

Table Cells 的 UILabel setFont 外观代理的替代方案

UILabel 外观字体和属性字符串字体

在 UILabel 上使用外观代理会使我的应用程序被拒绝,因为它会改变 UIAlertView?

PDF Formfield 字体大小:默认外观与外观流