構建iOS 7時,我的自定義字體正確顯示在UILabel中。但是,使用XCode 6和iOS 8構建另一個「標準」字體會顯示出來。iOS 8中的自定義字體未顯示
代碼:
UILabel *label = [[UILabel alloc] initWithFrame:rect];
UIFont *font = [[CAPTheme sharedTheme] appTitleFont];
label.text = title;
label.textAlignment = NSTextAlignmentCenter;
label.textColor = [UIColor whiteColor];
label.backgroundColor = [UIColor clearColor];
label.alpha = kLabelAlphaConstant;
[label setFont:font];
...
- (UIFont *)appTitleFont
{
NSArray *familyNames = [UIFont familyNames];
for (NSString *aFamilyName in familyNames) {
NSArray *fontNames = [UIFont fontNamesForFamilyName:aFamilyName];
NSLog(@"familyname: %@", aFamilyName);
for (NSString *aFontName in fontNames) {
NSLog(@" %@", aFontName);
}
}
return [UIFont fontWithFamily:@"MyFont" size:15.0f];
}
...
+ (UIFont*)fontWithFamily:(NSString*)fontFamily size:(float)size
{
if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) {
return [UIFont fontWithName:fontFamily size:size];
}
else {
UIFont *font = [UIFont fontWithName:fontFamily size:size];
UIFontDescriptor *des = [[font fontDescriptor] fontDescriptorByAddingAttributes:@{
UIFontDescriptorTextStyleAttribute: UIFontTextStyleHeadline,
UIFontDescriptorSizeAttribute: @(size)
}];
UIFont *finalFont = [UIFont fontWithDescriptor:des size:0.0];
return finalFont;
}
}
讓我們把我的字體 「MyFont」。它然後顯示在調試打印爲:
familyname: MyFont
MyFont
MyFont-Bold
我已經嘗試將它添加爲ttf和otf文件。它被添加到plist文件中的Fonts provided by application
下。它也被添加到目標中。我也嘗試過只使用其中一種字體。
有趣的是,我有代碼根據標籤大小調整標籤的大小。輸入不存在的字體系列名稱(即「MyFont123」)會使文本根本不顯示,這意味着它確實識別自定義字體存在,但不會顯示它。
任何想法?
這裏是我創建的一個演示項目,以顯示問題:https://www.dropbox.com/s/mkn7xb3fb2lmh20/customLabel.zip?dl=0 使用iOS 8運行它,字體將不會顯示。
編輯:我的猜測是,我不能使用fontDescriptors自定義字體,然後我回到我原來的問題,我得到的iOS 8崩潰,此錯誤:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason:
'scaledValueForValue: called on a font that doesn't have a text style set'
與此類似一個scaledValueForValue: called on a font that doesn't have a text style set
奇怪。當我輸入一個不存在的字體系列名時,我會以默認字體(我認爲是Helvetica?)獲取文本。 – 2014-10-07 15:31:31
你還使用fontDescriptorByAddingAttributes使它不會在iOS 8上崩潰? – Sunkas 2014-10-08 08:00:03
我不確定我的理解。我們不使用iOS 8上的fontWithDescriptor,它不會崩潰。你的'[UIFont fontWithName:fontFamily size:size]'適合我在iOS 8上正常工作。你所看到的崩潰是什麼? – 2014-10-08 13:55:33