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

Posted

技术标签:

【中文标题】更改 iPhone 应用程序的系统字体 - 整个应用程序【英文标题】:Change System Font for iPhone application - entire Application 【发布时间】:2009-11-10 18:34:09 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

Pixate 是迄今为止在我的应用程序中处理自定义类型的最简单方法。做简单的事情所涉及的代码要少得多。我喜欢它。【参考方案2】:

创建一个名为Constants.h 或其他名称的共享类。在里面这样做:

#define kStandardFont [UIFont systemFontOfSize:20] 

当然可以根据需要调整字体。然后,每当您需要使用它(在标签或其他地方)时,请执行以下操作:

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

【讨论】:

【参考方案3】:

我认为正确的答案是:不要那样做!弄清楚你为什么想这样做,然后想出其他方法来达到同样的目的。这里的人们很乐意帮助找出实现这些目标的另一种方法。 (例如,这就是 coneybeare 的回答有效暗示的内容。)

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

所有这些注意事项都构成了一个问题:您真正想通过这个来完成什么?

【讨论】:

【参考方案4】:

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

【讨论】:

【参考方案5】:

不 - 这就是为什么它被称为 system 字体,而不是 application 字体。

【讨论】:

那有没有我可以使用的称为应用程序字体的东西......定义一个字体,然后它将通过应用程序使用【参考方案6】:

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

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

【讨论】:

以上是关于更改 iPhone 应用程序的系统字体 - 整个应用程序的主要内容,如果未能解决你的问题,请参考以下文章

iPhone ePub 阅读器更改 ePub 书中所有页面的字体而不是当前的 webview 内容

根据每个 iPhone 大小更改字体大小

更改整个应用程序中的字体大小

如何以编程方式更改整个应用程序中的字体大小,Android?

iPhone 6s plus 上的字体大小

iOS12是啥字体