iOS将系统字体全局更改为自定义字体

时间:2017-05-25 09:50:41

标签: ios objective-c customization uifont

我想在故事板和xib的一个地方将所有系统字体更改为自定义字体。

我尝试过以下代码来更改字体。

[[UILabel appearance] setFont:[UIFont fontWithName:@"fontName" size:17.0]];
[[UITextField appearance] setFont:[UIFont fontWithName:@"fontName" size:17.0]];

当我使用上面的代码时,它的工作正常,但它的大小也在改变。

我只想更改字体系列并保持尺寸,就像在storyboard或xib中一样。

请给我一些好的解决方案。

2 个答案:

答案 0 :(得分:0)

我认为您可以继续使用相同的语句,但不要使用您选择的文字设置大小,只需使用当前系统字体大小:

float currentSystemFontSize = [UIFont systemFontSize];
[[UILabel appearance] setFont:[UIFont fontWithName:@"fontName" size:currentSystemFontSize]];

这应该保留系统的字体大小,只更改字体系列。

检查this答案,了解有关如何获取系统字体大小的更多信息。祝你好运!

答案 1 :(得分:-1)

在ViewDidLoad()中调用以下方法:

[self setCustomFontFamilyNotSize:@"CustomFontName" forView:self.view andSubViews:YES];

方法解体:

-(void)setCustomFontFamilyNotSize:(NSString*)customFontFamily forView:(UIView*)view andSubViews:(BOOL)isSubViews
{
 if ([view isKindOfClass:[UILabel class]])
 {
     UILabel *lbl = (UILabel *)view;
     [lbl setFont:[UIFont fontWithName:customFontFamily size:[[lbl font] pointSize]]];
 }

 if ([view isKindOfClass:[UITextField class]])
 {
     UITextField *txt = (UITextField *)view;
     [txt setFont:[UIFont fontWithName:customFontFamily size:[[txt font] pointSize]]];
 }   
}