【问题标题】:How to set NSMutableAttributedString into two lines如何将 NSMutableAttributedString 设置为两行
【发布时间】:2016-03-01 06:28:33
【问题描述】:

我想像这样创建一个UILablel

我想将年份字体设置为 HElvaticaNeu-medium 并将 2015 设置为 HelvaticaNeu。我需要这两个字符串出现在 2 行中,就像在这张图片中一样。

我怎么能做到这一点。我这样设置了两个单独的NSMutableAttributedString

UIFont *helMedium = [UIFont fontWithName:@"HelveticaNeue-Medium" size:12.0];
NSDictionary *mediumDict = [NSDictionary dictionaryWithObject: helMedium forKey:NSFontAttributeName];
NSMutableAttributedString *mAttrString = [[NSMutableAttributedString alloc] initWithString:@"Year :" attributes: mediumDict];

UIFont *helNormal = [UIFont fontWithName:@"HelveticaNeue" size:12.0];
NSDictionary *normalDict = [NSDictionary dictionaryWithObject: helNormal forKey:NSFontAttributeName];
NSMutableAttributedString *nAttrString = [[NSMutableAttributedString alloc] initWithString:@"2016" attributes: normalDict];

现在我应该如何将这 2 个字符串设置为两行? 有人有想法吗?

【问题讨论】:

  • "\n" 字符是您正在寻找的。将其添加到 helMedium stings end 或 helNormal string's start

标签: ios uilabel nsdictionary nsmutableattributedstring


【解决方案1】:

您需要将第二个字符串附加到第一个字符串

使用此代码。

UIFont *helMedium = [UIFont fontWithName:@"HelveticaNeue-Medium" size:12.0];
NSDictionary *mediumDict = [NSDictionary dictionaryWithObject: helMedium forKey:NSFontAttributeName];
NSMutableAttributedString *mAttrString = [[NSMutableAttributedString alloc] initWithString:@"Year :" attributes: mediumDict];

UIFont *helNormal = [UIFont fontWithName:@"HelveticaNeue" size:12.0];
NSDictionary *normalDict = [NSDictionary dictionaryWithObject: helNormal forKey:NSFontAttributeName];
NSMutableAttributedString *nAttrString = [[NSMutableAttributedString alloc] initWithString:@"\n2016" attributes: normalDict];

[mAttrString appendAttributedString:nAttrString];

label.attributedText = mAttrString;

【讨论】:

    【解决方案2】:
    NSMutableAttributedString *nAttrString = [[NSMutableAttributedString alloc] initWithString:@"\n2016" attributes: normalDict];
    
    NSMutableAttributedString  *attString = [[NSMutableAttributedString alloc] init];
    [attString appendAttributedString: mAttrString];
    [attString appendAttributedString: nAttrString];
    
    // label.attributedText = attString
    

    【讨论】:

      【解决方案3】:
        UIFont *helMedium = [UIFont fontWithName:@"HelveticaNeue-Medium" size:12.0];
        NSDictionary *mediumDict = [NSDictionary dictionaryWithObject: helMedium forKey:NSFontAttributeName];
        NSMutableAttributedString *mAttrString = [[NSMutableAttributedString alloc] initWithString:@"Year :" attributes: mediumDict];
      
        UIFont *helNormal = [UIFont fontWithName:@"HelveticaNeue" size:12.0];
        NSDictionary *normalDict = [NSDictionary dictionaryWithObject: helNormal forKey:NSFontAttributeName];
        NSMutableAttributedString *nAttrString = [[NSMutableAttributedString alloc] initWithString:@"\n2016" attributes: normalDict];
      
        [mAttrString appendAttributedString:nAttrString];
        _yearLabel.attributedText = mAttrString;
        [_yearLabel setNumberOfLines:2];
      

      如果您希望在 UILabel 中的文本周围有更多空间,请为其指定宽度和高度约束。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-09
        • 2013-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多