更改系统字体的iPhone应用程序 - 整个应用
题
是否有一种方法可以改变系统字体为整个应用程序?
我要定义的字体为整个应用程序,这样我就不必去到个人标签或个别字体来改变它。我想一个统一的定义,这将改变存在于应用程序内的所有字体。我该怎么做呢?
解决方案
请共享类称为Constants.h
或东西。在它这样做:
#define kStandardFont [UIFont systemFontOfSize:20]
当然,调整字体是你需要的东西它是。然后,当你需要使用它(在标签或其他)做到这一点:
#import "Constants.h"
…
…
…
[label setFont:kStandardFont];
其他提示
您可以使用 Pixate 风格你的应用程序。 当使用pixate,您可以设置通过CSS的UI元素的样式属性。 这样,您就可以在全局设置您的UILabels,同时也是UITextField等使用您的自定义字体。 这是迄今为止最好的方式来全局风格的字体。
在我的应用程序,我不得不使用“打开三世”和设置我所有的UILabels,UITextFields和UITextViews使用该字体:
在你的 “default.css”
label {
font-family: "Open Sans";
}
text-field {
font-family: "Open Sans";
}
text-view {
font-family: "Open Sans";
}
我认为正确的答案是:不要做!弄清楚为什么你认为你想这样做,然后找出一些其他的方式来达到同样的目的。在这里,人们会很乐意帮助其他的方式找出这些目的。 (例如,这就是coneybeare的答案有效建议。)
所有这一切说...有官方SDK没有办法改变的系统字体。您可能能够通过交叉混合UIFont的systemFontWithSize取得一些进展:方法 - 看 HTTP:// WWW .cocoadev.com / index.pl?MethodSwizzling 更多关于法混写。记住(一)这只会改变任何使用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有它自己的字体设置。
如果你想改变所有控件的字体,你必须改变他们。