字体描述符在iOS 8中返回零

下面的代码可以在iOS 7中正常工作,但是不会在iOS 8中返回粗体或斜体字体。对于Helvetica Neue来说没问题,但是对Arial字体不起作用。

UIFontDescriptor *descriptor1 = [UIFontDescriptor fontDescriptorWithFontAttributes:@{UIFontDescriptorFamilyAttribute: @"Arial"}]; UIFontDescriptor* boldFontDescriptor1 = [descriptor1 fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitBold]; UIFont* font1 = [UIFont fontWithDescriptor:boldFontDescriptor1 size:16.0]; [self.lblArialB setFont:font1]; 

在设备和模拟器上testing,仍然是一样的错误。

FWIW,这是我想出的解决方法,使用UIFontDescriptor的属性字典初始值设定项,而不是看似有问题的fontDescriptorWithSymbolicTraits:

 NSString *fontFamily = @"Arial"; BOOL isBold = YES; BOOL isItalic = YES; CGFloat fontSize = 20.0; UIFontDescriptor *fontDescriptor = [UIFontDescriptor fontDescriptorWithFontAttributes: @{ @"NSFontFamilyAttribute" : fontFamily, @"NSFontFaceAttribute" : (isBold && isItalic ? @"Bold Italic" : (isBold ? @"Bold" : (isItalic ? @"Italic" : @"Regular"))) }]; UIFont *font = [UIFont fontWithDescriptor:fontDescriptor size:fontSize]; 

对我来说,fontDescriptorWithFontAttributes像以前一样工作,但fontDescriptorWithSymbolicTraits失败。 我解决了这个问题,回到使用[UIFont fontWithName:size:]

 [self.titleLabel setFont:[UIFont fontWithName:@"PTSans-Bold" size:47.67]];