3 回答

TA貢獻1806條經驗 獲得超5個贊
更新:Xcode 6 Interface Builder現在允許您選擇自定義字體,并將在設計時正確呈現它們。
我知道這個問題已經很久了,但是我一直在努力尋找一種簡單的方法來輕松為iOS 5在Storyboard(或Interface Builder)中指定自定義字體,因此我找到了一個非常方便的解決方案。
首先,請按照本教程的說明,將字體添加到項目中。還請記住,可以使用UIAppearance代理的setTitleTextAttributes:方法來指定UINavigationBar,UITabBar和UISegmentedControl自定義字體。
將以下類別添加到項目中,用于UIButton,UITextField,UILabel和任何其他需要自定義字體的組件。這些類別僅實現了一個新屬性fontName,該屬性可以更改元素的當前字體,同時保持字體大小。
要指定在故事板的字體,只需選擇所需的元素(標簽,按鈕,TextView的,等等),并添加一個用戶自定義運行屬性與關鍵路徑設置為的fontName類型的字符串和值與您的自定義字體的名稱。
自定義字體故事板
就是這樣,您甚至不需要導入類別。這樣,您不需要為每個需要自定義字體的UI組件都提供一個插座,也不需要手動對其進行編碼。
考慮到該字體不會在Storyboard中顯示,但是在設備或模擬器上運行時會看到該字體。
分類文件
UIButton + TCCustomFont.h:
#import <UIKit/UIKit.h>
@interface UIButton (TCCustomFont)
@property (nonatomic, copy) NSString* fontName;
@end
UIButton + TCCustomFont.m:
#import "UIButton+TCCustomFont.h"
@implementation UIButton (TCCustomFont)
- (NSString *)fontName {
return self.titleLabel.font.fontName;
}
- (void)setFontName:(NSString *)fontName {
self.titleLabel.font = [UIFont fontWithName:fontName size:self.titleLabel.font.pointSize];
}
@end
UILabel + TCCustomFont.h:
#import <UIKit/UIKit.h>
@interface UILabel (TCCustomFont)
@property (nonatomic, copy) NSString* fontName;
@end
UILabel + TCCustomFont.m:
#import "UILabel+TCCustomFont.h"
@implementation UILabel (TCCustomFont)
- (NSString *)fontName {
return self.font.fontName;
}
- (void)setFontName:(NSString *)fontName {
self.font = [UIFont fontWithName:fontName size:self.font.pointSize];
}
@end
UITextField + TCCustomFont.h:
#import <UIKit/UIKit.h>
@interface UITextField (TCCustomFont)
@property (nonatomic, copy) NSString* fontName;
@end
UITextField + TCCustomFont.m:
#import "UITextField+TCCustomFont.h"
@implementation UITextField (TCCustomFont)
- (NSString *)fontName {
return self.font.fontName;
}
- (void)setFontName:(NSString *)fontName {
self.font = [UIFont fontWithName:fontName size:self.font.pointSize];
}
@end
也可以從GIST下載,也可以作為一個文件下載。
故障排除
如果由于fontName未指定屬性而遇到運行時錯誤,只需在項目設置中的“ 其他鏈接器標志” -all_load下添加標志,以強制鏈接器包括類別。

TA貢獻1884條經驗 獲得超4個贊
從Xcode6.0開始,作為Xcode6.0發行說明:
Interface Builder會在設計期間渲染嵌入式自定義iOS字體,從而以正確的尺寸更準確地預覽成品應用的外觀。
您可以在情節提要中設置標簽字體。您可以執行以下操作
獲取自定義字體文件(.ttf, .ttc)
將字體文件導入Xcode項目
在app-info.plist中,添加一個由應用程序提供的名為Fonts的鍵。它是一個數組類型,將所有字體文件名添加到數組中,注意:包括文件擴展名。
在情節提要中,將UILabel拖到您的界面上,選擇標簽,然后導航到“ 屬性”檢查器,單擊“ 字體”選擇區域的右鍵圖標按鈕。在彈出面板中,選擇“ 字體到自定義”,然后選擇要嵌入的“ 族 ”字體名稱。

TA貢獻1790條經驗 獲得超9個贊
從XCode 9.4開始,XCode仍不直接在情節提要中尊重字體。您可以在設計時看到它們,但不能在運行時看到它們。如果使用fontWithName API,您將知道它返回nil,但是在情節提要/ xib中使用時,無法知道為什么它不出現。
確保它在運行時可以從Storyboard / XIB輕松運行的唯一方法是將.ttc / .ttf添加到
Copy Bundle Resources
Build Phase中。從9.4開始,將字體文件名添加到info.plist似乎不再是必需的。
- 3 回答
- 0 關注
- 584 瀏覽
添加回答
舉報