对于粗体字体,UILabel字体大小不正确

时间:2016-05-06 08:20:56

标签: ios uilabel uifont

我动态创建UIlabels,对于第一个使用Bold样式的标签。

my string data <br />
    <p>We understand the challenges</p> <strong> that small to medium</strong> my string data my string data my string data

但它画得像这样

enter image description here

为什么第一个标签更大?

4 个答案:

答案 0 :(得分:7)

对于&#34; Avenir Next&#34;家庭字体必须使用这些名称:

AvenirNext-MediumItalic, AvenirNext粗体, AvenirNext,超轻, AvenirNext-DemiBold, AvenirNext-HeavyItalic, AvenirNext重, AvenirNext介质, AvenirNext斜体, AvenirNext-UltraLightItalic, AvenirNext-BOLDITALIC, AvenirNext正规, AvenirNext-DemiBoldItalic

Avenir Next-Bold改为AvenirNext-Bold,Avenir接下来AvenirNext-Regular

答案 1 :(得分:1)

您需要更改以下代码行。

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

对于所有字体系列名称检查,请使用以下代码。

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

    }

答案 2 :(得分:0)

从它适用的字体名称中删除空格

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;

答案 3 :(得分:0)

在当前代码中,字体不会应用于该数组中的第一个字符串。如果您尝试打印labelfont的日志,则i = 0将为nil。 如果您打印label.font的日志,您可以看到以下输出

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

要使粗体字体正常工作,请尝试以下方法,

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

希望这会有所帮助。