有没有办法可以更改整个应用程序的系统字体?
我想为整个应用程序定义字体,这样我就不必去单个标签或单个字体来更改它。我想要一个通用定义,它将更改应用程序中存在的所有字体。我该怎么做呢?
您可以使用Pixate为您的应用设置样式。使用 pixate 时,您可以通过 CSS 设置 UI 元素的样式属性。这样,您可以全局设置您的 UILabels 和 UITextField 等以使用您的自定义字体。到目前为止,这是全局设置字体样式的最佳方式。
在我的应用程序中,我必须使用“Open Sans”并设置我所有的 UILabel、UITextFields 和 UITextViews 以使用该字体:
在你的“default.css”
label {
font-family: "Open Sans";
}
text-field {
font-family: "Open Sans";
}
text-view {
font-family: "Open Sans";
}
制作一个名为的共享类Constants.h
或其他东西。在其中这样做:
#define kStandardFont [UIFont systemFontOfSize:20]
当然,将字体调整为您需要的字体。然后,每当您需要使用它(在标签或其他内容中)时,请执行以下操作:
#import "Constants.h"
…
…
…
[label setFont:kStandardFont];
我认为正确的答案是:不要那样做!弄清楚你为什么想这样做,然后想出其他方法来达到同样的目的。这里的人们很乐意帮助找出实现这些目标的另一种方法。(例如,这就是 coneybeare 的回答有效地暗示的。)
综上所述……官方SDK中无法更改系统字体。您可以通过调配 UIFont 的 systemFontWithSize: 方法取得一些进展——有关方法调配的更多信息,请参见http://www.cocoadev.com/index.pl?MethodSwizzling。请记住(a)这只会改变任何使用 systemFontWithSize: 来获取其字体的外观,(b)这可能会破坏依赖于具有原始字体大小的各种事物,以及(c)这可能很好让你被 App Store 拒绝。
所有这些警告都构成了一个问题:你真正想用这个来完成什么?
似乎至少对UILabel
s 有效:
@interface UIFont (mxcl)
@end
@implementation UIFont (mxcl)
+ (id)systemFontOfSize:(CGFloat)sz {
return [UIFont fontWithName:@"AmericanTypewriter" size:sz]
}
+ (id)boldSystemFontOfSize:(CGFloat)sz {
return [UIFont fontWithName:@"AmericanTypewriter-Bold" size:x]
}
@end
不 - 这就是为什么它被称为系统字体,而不是应用程序字体。
字体特定于 UI 中的每个控件。例如,每个 UILabel 都有自己的字体设置。
如果要更改所有控件的字体,则必须全部更改。