Ios 更改大型应用程序中每个UILabel的字体

Ios 更改大型应用程序中每个UILabel的字体,ios,fonts,skinning,swizzling,Ios,Fonts,Skinning,Swizzling,这里有一个有趣的问题: 我们正在重新设计我们的整个应用程序,它由100000多行代码和近100个XIB文件组成。新设计要求(几乎)应用程序中的每个标签使用新的自定义字体,而旧应用程序使用默认字体Helvetica Neue 改变尽可能多的UILabel最有效的方法是什么?我们不想在代码和XIBs中手动更改数千个标签(这尤其困难,因为我们使用的是非系统字体) 我们已经讨论了swizzling UILabel的创建方法,默认使用新的自定义字体,这仍然允许在创建后自定义Helvetica Neue中保

这里有一个有趣的问题:

我们正在重新设计我们的整个应用程序,它由100000多行代码和近100个XIB文件组成。新设计要求(几乎)应用程序中的每个标签使用新的自定义字体,而旧应用程序使用默认字体Helvetica Neue

改变尽可能多的UILabel最有效的方法是什么?我们不想在代码和XIBs中手动更改数千个标签(这尤其困难,因为我们使用的是非系统字体)

我们已经讨论了swizzling UILabel的创建方法,默认使用新的自定义字体,这仍然允许在创建后自定义Helvetica Neue中保留的少数标签


想法?

大口大口喝是个不错的选择。如果您想以其他方式进行操作,并且在自定义字体方面有问题,我通常会创建一个简单的UILabel子类,用于更改每个自定义字体在awakeFromNib中的字体,以便在界面生成器中进行布局

但是。。。我想到这一点: [[UILabel外观]设置字体:xxx]


不过,我不知道你会如何处理保持尺码的问题。也许swizzle是最好的选择

您可能应该将UILabel子类化,并覆盖您选择的
init
方法,或者
awakeFromNib
,并在那里设置自定义字体。然后您可以手动浏览
xib
,或者在文本编辑器中打开它并添加一行,如

<string key="X.CustomClassName">YourCustomLabelClass</string>
YourCustomLabelClass
将指定标签设置为自定义标签类。

查看NUI。
您可以使用类似CSS的样式表自定义许多控件,并通过子类或类别实现它。

我的印象是UILabel不支持UIAppearance(),但它似乎偶尔工作。该死,值得一试。这确实看起来像是设想解决的问题类型;奇怪的是,尽管UILabel的字体属性没有用UI\u外观\u选择器标记,但它实际上似乎对某些标签有效!这涵盖了我们的大多数案例,但我使用Martol1ni的答案来回答其余的问题。谢谢大家!我喜欢这个想法,但你真的必须从一开始就使用NUI。如果您在笔尖和代码中设置字体,然后尝试使用NUI为您的应用程序添加白色标签,那么您不能只更改标签,因为NUI将忽略您在代码中设置的所有特定字体。您必须返回并将NUICSS类添加到所有标签中,在其中设置代码中的字体,这将是一项相当大的工作。