3 回答

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個(gè)贊
更新:Xcode 6 Interface Builder現(xiàn)在允許您選擇自定義字體,并將在設(shè)計(jì)時(shí)正確呈現(xiàn)它們。
我知道這個(gè)問(wèn)題已經(jīng)很久了,但是我一直在努力尋找一種簡(jiǎn)單的方法來(lái)輕松為iOS 5在Storyboard(或Interface Builder)中指定自定義字體,因此我找到了一個(gè)非常方便的解決方案。
首先,請(qǐng)按照本教程的說(shuō)明,將字體添加到項(xiàng)目中。還請(qǐng)記住,可以使用UIAppearance代理的setTitleTextAttributes:方法來(lái)指定UINavigationBar,UITabBar和UISegmentedControl自定義字體。
將以下類別添加到項(xiàng)目中,用于UIButton,UITextField,UILabel和任何其他需要自定義字體的組件。這些類別僅實(shí)現(xiàn)了一個(gè)新屬性fontName,該屬性可以更改元素的當(dāng)前字體,同時(shí)保持字體大小。
要指定在故事板的字體,只需選擇所需的元素(標(biāo)簽,按鈕,TextView的,等等),并添加一個(gè)用戶自定義運(yùn)行屬性與關(guān)鍵路徑設(shè)置為的fontName類型的字符串和值與您的自定義字體的名稱。
自定義字體故事板
就是這樣,您甚至不需要導(dǎo)入類別。這樣,您不需要為每個(gè)需要自定義字體的UI組件都提供一個(gè)插座,也不需要手動(dòng)對(duì)其進(jìn)行編碼。
考慮到該字體不會(huì)在Storyboard中顯示,但是在設(shè)備或模擬器上運(yùn)行時(shí)會(huì)看到該字體。
分類文件
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下載,也可以作為一個(gè)文件下載。
故障排除
如果由于fontName未指定屬性而遇到運(yùn)行時(shí)錯(cuò)誤,只需在項(xiàng)目設(shè)置中的“ 其他鏈接器標(biāo)志” -all_load下添加標(biāo)志,以強(qiáng)制鏈接器包括類別。

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

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