在iOS 8中,字体描述符返回nil

在iOS 8中,字体描述符返回nil,ios,ios8,xcode6,uifontdescriptor,Ios,Ios8,Xcode6,Uifontdescriptor,以下代码在iOS 7中运行良好,但在iOS 8中不返回粗体或斜体。这对于Helvetica Neue是可以的,但对于Arial字体不起作用 UIFontDescriptor *descriptor1 = [UIFontDescriptor fontDescriptorWithFontAttributes:@{UIFontDescriptorFamilyAttribute: @"Arial"}]; UIFontDescriptor* boldFontDescriptor1 = [descripto

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

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

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

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

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];

我对巴斯克维尔字体也有同样的问题。事实上,我正在做Ray Wenderlich的iOS 7教程。正如您所说,这是一个iOS 8特有的问题。这没关系,但无法解决问题,因为您无法为iOS中的每个字体系列硬编码粗体和斜体。@neural5torm:您如何在Swift中使用它?检查了,但似乎没有记录:(我的实现看起来像,你介意看一下吗?代替fontFamily,我如何使用我的textfield系统字体和大小?我只想要粗体