2016-05-06 15 views
2

Ich bin dynamisch erstellen UIlabels und für das erste Etikett verwende ich Fett Stil.UILabel Schriftgröße ist nicht korrekt für Fettschrift

for (int i = 0; i < vehicles.count; ++i) { 
    CGRect labelRect = CGRectMake(i * (self.frame.size.width/vehicles.count), 
            3, self.frame.size.width/vehicles.count, 
            13); 
    UILabel *label = [[UILabel alloc] initWithFrame:labelRect]; 
    label.textColor = thumbColor; 
    label.textAlignment = NSTextAlignmentCenter; 
    label.text = vehicles[i].vehicleClass; 
    UIFont *labelFont; 
    if (i == 0) { 
     labelFont = [UIFont fontWithName:@"Avenir Next-Bold" size:9.0]; 
    } else { 
     labelFont = [UIFont fontWithName:@"Avenir Next" size:9.0]; 
    } 
    label.font = labelFont; 

    [vehiclesLabels addObject:label]; 
    [self addSubview:label]; 
} 

Aber es zeichnen wie diese

enter image description here

Warum das erste Label größer ist?

+0

Es ist sehr für alle benutzerdefinierten Schriftarten. –

+0

Vielleicht ist es ein falscher Name Avenir Next-Bold? –

+0

Code ist korrekt überprüfen Schriftart Name –

Antwort

4

Für "Avenir Next" Familie Schriftarten, die Sie diese Namen verwenden müssen:

AvenirNext-MediumItalic, AvenirNext-Bold, AvenirNext-Ultralight, AvenirNext-DemiBold, AvenirNext-HeavyItalic, AvenirNext-Heavy, AvenirNext-Medium, AvenirNext-Italic, AvenirNext-UltraLightItalic, AvenirNext-BoldItalic, AvenirNext-Regular, AvenirNext-DemiBoldItalic

Ändern Avenir Next-Bold zu AvenirNext-Bold und Avenir Neben AvenirNext-Regular

1

Sie müssen nur die folgende Zeile Code ändern.

labelFont = [UIFont fontWithName:@"AvenirNextCondensed-Bold" size:9.0]; 

Für die Überprüfung der Schriftfamilie verwenden Sie den folgenden Code.

NSArray *familyNames = [[NSArray alloc] initWithArray:[UIFont familyNames]]; 
    NSArray *fontNames; 
    NSInteger indFamily, indFont; 
    for (indFamily=0; indFamily<[familyNames count]; ++indFamily) 
    { 
     NSLog(@"Family name: %@", [familyNames objectAtIndex:indFamily]); 
     fontNames = [[NSArray alloc] initWithArray: 
        [UIFont fontNamesForFamilyName: 
         [familyNames objectAtIndex:indFamily]]]; 
     for (indFont=0; indFont<[fontNames count]; ++indFont) 
     { 
      NSLog(@" Font name: %@", [fontNames objectAtIndex:indFont]); 
     } 

    } 
0

Entfernen Sie die Leerzeichen aus dem Schriftnamen wird es für Sie arbeitet

UIFont *labelFont; 
    if (i == 0) { 
     labelFont = [UIFont fontWithName:@"AvenirNext-Bold" size:9.0]; 
    } else { 
     labelFont = [UIFont fontWithName:@"AvenirNext-Regular" size:9.0]; 
    } 
    label.font = labelFont; 
0

In Ihrem aktuellen Code der Schrift zum ersten Zeichenfolge in diesem Array nicht angewendet wird. Wenn Sie versuchen, das Protokoll für labelfont zu drucken, ist es für i = 0 gleich Null. Und wenn Sie das Protokoll für label.font drucken können Sie die folgende Ausgabe

(lldb) po label.font 
<UICTFont: 0x7fbbb36185a0> font-family: ".SFUIText-Regular"; font-weight: normal; font-style: normal; font-size: 17.00pt 

Für die fette Schrift versuchen zu arbeiten, sehen Sie bitte die folgenden

labelFont = [UIFont fontWithName:@"AvenirNext-Bold" size:9.0]; 

Hope this helfen.