6

以下代码在 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];

在设备和模拟器上测试,仍然是同样的错误。

4

2 回答 2

6

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];
于 2014-10-06T19:01:00.457 回答
0

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

[self.titleLabel setFont:[UIFont fontWithName:@"PTSans-Bold" size:47.67]];
于 2014-10-02T19:05:41.043 回答