2013-08-12 44 views
8

Vì tôi hiểu tất cả các điều khiển chuẩn sử dụng phông chữ hệ thống theo mặc định.Có cách nào để thay đổi phông chữ mặc định cho ứng dụng của bạn

Ngoài ra, API [UIFont systemFontOfSize:] cũng sử dụng phông chữ hệ thống.

Có cách nào để xác định lại nó cho toàn bộ ứng dụng, thay vì đặt phông chữ cho bảng, nhãn, v.v ... không?

+1

Bạn đã thử tạo danh mục cho UIFont chưa? – NeverBe

+0

Bạn có chắc chắn * bạn muốn thay đổi không? Đây là cách giao diện jarring được sinh ra. – Dave

+0

@Dave: Có. Tôi chắc chắn tôi muốn thay đổi nó :) –

Trả lời

8

Câu trả lời là không, bạn không thể thay đổi hệ thống của AppleFont, bạn cần phải tự đặt phông chữ trên điều khiển của mình.

Đối với cách tốt nhất để thiết lập một phông chữ mặc định cho toàn bộ ứng dụng iOS, hãy kiểm tra bên dưới SO câu hỏi:

Set a default font for whole iOS app?

How to set a custom font for entire iOS app without specifying size

How do I set a custom font for the whole application?

Is there a simple way to set a default font for the whole app?

5

Xác định và xuất (bằng cách bao gồm một tiêu đề trong các tập tin hoặc trong precompi dẫn tiêu đề) một loại của UIFont như sau:

@implementation UIFont (Utils) 

#pragma clang diagnostic push 
#pragma clang diagnostic ignored "-Wobjc-protocol-method-implementation" 

+ (UIFont *)systemFontOfSize:(CGFloat)size 
{ 
    return [UIFont fontWithName:@"YOUR_TRUETYPE_FONT_NAME_HERE" size:size]; 
} 

+ (UIFont *)lightSystemFontOfSize:(CGFloat)size 
{ 
    return [UIFont fontWithName:@"YOUR_TRUETYPE_FONT_NAME_HERE" size:size]; 
} 

+ (UIFont *)boldSystemFontOfSize:(CGFloat)size 
{ 
    return [UIFont fontWithName:@"YOUR_TRUETYPE_FONT_NAME_HERE" size:size]; 
} 

+ (UIFont *)preferredFontForTextStyle:(NSString *)style 
{ 
    if ([style isEqualToString:UIFontTextStyleBody]) 
     return [UIFont systemFontOfSize:17]; 
    if ([style isEqualToString:UIFontTextStyleHeadline]) 
     return [UIFont boldSystemFontOfSize:17]; 
    if ([style isEqualToString:UIFontTextStyleSubheadline]) 
     return [UIFont systemFontOfSize:15]; 
    if ([style isEqualToString:UIFontTextStyleFootnote]) 
     return [UIFont systemFontOfSize:13]; 
    if ([style isEqualToString:UIFontTextStyleCaption1]) 
     return [UIFont systemFontOfSize:12]; 
    if ([style isEqualToString:UIFontTextStyleCaption2]) 
     return [UIFont systemFontOfSize:11]; 
    return [UIFont systemFontOfSize:17]; 
} 

#pragma clang diagnostic pop 

@end 

Biến thể nhẹ trở thành một bổ sung hữu ích bắt đầu với iOS 7. Hãy tận hưởng! ;)

+2

Đây không phải là một ý tưởng tốt. – orj

+0

@orj Tại sao đây không phải là ý tưởng hay? điều này dường như không sử dụng api không có giấy tờ. hoặc là nó ? –

+2

Vâng, nó quá tải thực hiện tiêu chuẩn của các phương pháp này trong UIKit, mà không phải là hoàn toàn được đề nghị; f.e. iOS 9 đi kèm với chuyển đổi thích ứng của phông chữ hệ thống giữa các biến thể San Francisco _Display_ và _Text_ tùy thuộc vào kích thước phông chữ được yêu cầu. Tôi vẫn thấy kỹ thuật này ** an toàn ** mặc dù, trừ khi bạn đang viết một ứng dụng typographic hoặc cần một số tính năng bổ sung phông chữ, đây là cách rất dễ dàng và nhanh chóng để chuyển đổi phông chữ ứng dụng mặc định một cách khá xác định. – michi

Các vấn đề liên quan