【问题标题】:UILabel Multiple LinesUILabel 多行
【发布时间】:2013-09-10 23:48:06
【问题描述】:

我有一个 UILable,它在我按下按钮时显示文本。文本来自属性字符串。其中一个按钮需要一个上标属性:

string = [[NSMutableAttributedString alloc]initWithString:@"A"];
[string addAttribute:NSFontAttributeName value:(font) range:NSMakeRange(string.length-1, 1)];
[string addAttribute:(NSString*)kCTSuperscriptAttributeName value:@"1" range:NSMakeRange(string.length-1, 1)];
[string2 appendSttributedString: string];
label.attributedText = string2;

只要 string2 适合 UILable 中的一行,此代码就可以工作。当文本开始跨越两行时,它会按原样显示。但是,当添加 kCTSuperscriptAttributeName 上标属性时,标签的第二行会消失并被截断。我不确定发生了什么。有人有想法吗?

【问题讨论】:

    标签: objective-c uilabel nsattributedstring


    【解决方案1】:

    确保您将 UILabel 上的 numberOfLines 属性设置为 2 或其他值,以便标签不会截断超过第一行。希望这会有所帮助!

    【讨论】:

    • numberOfLines 设置为 2。最初,标签将文本包装成两行,但当调用上标属性时,它会转到一行并截断。我什至尝试在代码中设置 numberOfLines 但没有帮助。
    • 您能否发布标签的完整代码,以便我运行它并查看/解决问题?
    • 上面的代码基本上就是它的全部了。它位于单击按钮事件中,并将字符串附加到 string2,其中包含我要在标签中显示的文本的集合。这是关于上标属性的东西,它不允许将文本换成两行。
    【解决方案2】:

    您是否为 NSAttributedString 尝试了“NSBaselineOffsetAttributeName”?

         -(void)setText:(id)text withPrefixText:(id)prefixText andSuffixText:(id)suffixText
     {
    NSString * compondText = [self textByCompoundingText:text withPrefixText:prefixText WithsuffixText:suffixText];
    NSMutableAttributedString * attributedCompoundText = [[NSMutableAttributedString alloc] initWithString:compondText];
    
    NSMutableDictionary * prefixTextAttributes = [@{} mutableCopy];
    prefixTextAttributes[NSFontAttributeName]  = _prefixTextFont? _prefixTextFont:self.font;
    prefixTextAttributes[NSForegroundColorAttributeName] = _prefixTextColour? _prefixTextColour:self.textColor;
    NSNumber *baselineOffSet =[NSNumber numberWithUnsignedInteger:_prefixTextVerticalPositionning];
    prefixTextAttributes[(NSString*)NSBaselineOffsetAttributeName] = baselineOffSet;
    
    NSMutableDictionary * suffixTextAttributes = [@{} mutableCopy];
    suffixTextAttributes[NSFontAttributeName]  = _suffixTextFont? _suffixTextFont:self.font;
    suffixTextAttributes[NSForegroundColorAttributeName] = _suffixTextColour ?_suffixTextColour:self.textColor;
    baselineOffSet = [NSNumber numberWithUnsignedInteger:_suffixTextVerticalPostioning];
    suffixTextAttributes[(NSString*)NSBaselineOffsetAttributeName] = baselineOffSet;
    if(prefixText)
        [attributedCompoundText addAttributes:prefixTextAttributes  range:[compondText rangeOfString:prefixText]];
    if(suffixText)
        [attributedCompoundText addAttributes:suffixTextAttributes  range:[compondText rangeOfString:suffixText]];
    self.attributedText = attributedCompoundText;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-03
      • 1970-01-01
      • 2016-06-14
      • 2021-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多