更改iPhone应用程序的系统字体 - 整个应用程序

时间:2009-11-10 18:34:10

标签: iphone fonts pixate

有没有办法可以更改整个应用程序的系统字体?

我想为整个Application定义字体,这样我就不必去单个标签或单个字体来改变它。我想要一个通用的定义,它将改变应用程序中存在的所有字体。我该怎么做?

6 个答案:

答案 0 :(得分:4)

您可以使用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";
}

enter image description here

答案 1 :(得分:2)

创建一个名为Constants.h的共享类。在它做到这一点:

#define kStandardFont [UIFont systemFontOfSize:20] 

当然,将字体调整为您需要的字体。然后,无论何时你需要使用它(在标签或其他什么),请执行以下操作:

#import "Constants.h"
…
…
… 
[label setFont:kStandardFont];

答案 2 :(得分:2)

我认为正确的答案是:不要那样做!找出你认为你想要这样做的原因,然后找出实现相同目的的其他方法。这里的人们很乐意帮助找到达到目的的另一种方法。 (例如,coneybeare的答案有效地暗示了这一点。)

所有这一切......官方SDK中没有办法改变系统字体。您可以通过调配UIFont的systemFontWithSize:方法取得一些进展 - 有关方法调配的更多信息,请参阅http://www.cocoadev.com/index.pl?MethodSwizzling。请记住(a)这只会改变使用systemFontWithSize的任何东西的外观:获取它的字体,(b)这可能会破坏依赖于具有原始字体大小的各种事物,并且(c)这可能很好让你从App Store中被拒绝。

所有这些警告都会提出这样一个问题:你真正想要实现的目标是什么?

答案 3 :(得分:2)

似乎至少在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

答案 4 :(得分:1)

不 - 这就是为什么它被称为系统字体,而不是应用程序字体。

答案 5 :(得分:0)

字体特定于UI中的每个控件。例如,每个UILabel都有自己的字体设置。

如果您想更改所有控件的字体,则必须全部更改。