是否有一种方法可以改变系统字体为整个应用程序?

我要定义的字体为整个应用程序,这样我就不必去到个人标签或个别字体来改变它。我想一个统一的定义,这将改变存在于应用程序内的所有字体。我该怎么做呢?

有帮助吗?

解决方案

请共享类称为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拒绝。

所有这些警告加起来的问题:什么是你真正想要这个完成

似乎至少为UILabels工作:

@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有它自己的字体设置。

如果你想改变所有控件的字体,你必须改变他们。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top