Font Descriptor devuelve nil en iOS 8
ios8 xcode6 (2)
El siguiente código funciona bien en iOS 7, pero no devuelve letra negrita o cursiva en iOS 8. Está bien para Helvetica Neue, pero no funciona para fuente Arial.
UIFontDescriptor *descriptor1 = [UIFontDescriptor fontDescriptorWithFontAttributes:@{UIFontDescriptorFamilyAttribute: @"Arial"}];
UIFontDescriptor* boldFontDescriptor1 = [descriptor1 fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitBold];
UIFont* font1 = [UIFont fontWithDescriptor:boldFontDescriptor1 size:16.0];
[self.lblArialB setFont:font1];
Probado en el dispositivo y el simulador y el mismo error.
FWIW, esta es la solución que se me ocurrió, usando el inicializador de diccionario de atributos de UIFontDescriptor en lugar de la fuente con errores 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];
Para mí, el fontDescriptorWithFontAttributes funciona igual que antes, pero el fontDescriptorWithSymbolicTraits falla miserablemente. Lo resolví volviendo a usar [UIFont fontWithName: size:]
[self.titleLabel setFont:[UIFont fontWithName:@"PTSans-Bold" size:47.67]];