Font descriptor returns nil in iOS 8

The following code works fine in iOS 7, but does not return bold or italic fonts in iOS 8. This is normal for Helvetica Neue, but does not work for the Arial font.

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

Tested on the device and the simulator and still the same error.

+6
source share
2 answers

FWIW, this is a workaround I came across using the UIFontDescriptor attribute dictionary initializer instead of the seemingly fontDescriptorWithSymbolicTraits buggy:

 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]; 
+6
source

For me, fontDescriptorWithFontAttributes still works, but fontDescriptorWithSymbolicTraits fails. I solved this by reverting to using [UIFont fontWithName: size:]

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

Source: https://habr.com/ru/post/975655/


All Articles