【发布时间】:2012-12-07 13:47:30
【问题描述】:
我正在为我公司的客户制作应用程序。整个应用程序已完成,并且已经在应用程序商店中。但现在他希望我将标签/文本视图的字体或任何有文本的地方更改为自定义文本。有什么方法可以在一个地方更改字体,以便在应用程序的任何地方都可以更改?
【问题讨论】:
标签: iphone objective-c ios ipad fonts
我正在为我公司的客户制作应用程序。整个应用程序已完成,并且已经在应用程序商店中。但现在他希望我将标签/文本视图的字体或任何有文本的地方更改为自定义文本。有什么方法可以在一个地方更改字体,以便在应用程序的任何地方都可以更改?
【问题讨论】:
标签: iphone objective-c ios ipad fonts
据我所知,没有任何神奇的解决方案可以全局更改字体。你可以做小班来做到这一点。例如,您可以通过创建自定义UILabel 类并更改initWithFrame 和awakeFromNib 的字体来更改所有UILabel 字体。所以看起来您可能必须对应用中的所有 ui 元素执行此操作。
但是,嘿,优势是。下次更改字体将是一件轻而易举的事。我们都知道客户公司如何改变主意...
【讨论】:
我刚刚发现[[UILabel appearance] setFont:[UIFont fontWithName:@"Open Sans" size:20.0]]; 效果很好
【讨论】:
在您的应用委托中创建一个可供所有应用类访问的 NSString。这个 NSString 将是你的字体的名称。现在浏览您的应用程序并将所有文本的字体更改为 NSString 中的名称。
label.font = [UIFont fontWithName:appDelegate.fontName size:12];
只需将 NSString 设置为您在应用程序委托中选择的任何字体,其他所有内容都会更新为该字体。这应该比创建和实现 UILabel 子类更容易,因为您只想更改一个属性的一部分。
【讨论】:
您可以在项目的 .pch 文件中为字体编写宏(将仅替换字体名称或 UIFont 对象)。
#define TextFont [UIFont fontWithName:@"Helvetica" size:13]
并在所有课程中使用它。但是您使用 IB 或故事板放置的所有文本,您必须通过 IB 或故事板手动更改所有字体。您现在可以为所有 UI 元素创建 IBOutelets,以便下次使用宏以编程方式轻松更改字体。
【讨论】: