设置attributedText的坑

2017-11-21  本文已影响29人  天空的羁绊
    [self.view addSubview:({
        //描述
        UILabel * descriptionL = [[UILabel alloc]initWithFrame:CGRectMake(30,340,150,50)];
        descriptionL.numberOfLines = 3;
        descriptionL.attributedText = [self attributedStringWithText:@"贴心在线,省心调解;上门代收索赔资料,由5000元升级到万元;免勘现场、无忧定损单证简化。官方微信"];
        descriptionL.font = [UIFont systemFontOfSize:10];
        descriptionL.lineBreakMode = NSLineBreakByTruncatingMiddle;
        descriptionL;
    })];
  1. lineBreakMode三个属性都是用于截断最后一行文本的。
    例子中,label有三行,无论lineBreakMode是head,meddle或tail,都是截断第三行的文本。

  2. lineBreakMode必须放在attributedText下面。否则不起作用:
    API的解释:

用于包装和截断标签文本的技术。
如果不使用样式文本,则此属性应用于text属性中的整个文本字符串。
如果使用的是样式文本,则为此属性分配一个新值以使lineBreakMode应用于属性文本属性中的整个字符串。
如果要将lineBreakMode应用于文本的一部分,请使用所需的样式信息创建一个新的属性字符串,并将其与标签关联。
但是,NSParagraphStyle属性(如由NSLineBreakMode定义的那些属性)适用于整个段落(如为paragraphRangeForRange定义),而不是段落内的单词。
此属性在正常绘图期间以及必须缩小字体大小以适应边界框中的标签文本的情况下均有效。
该属性默认设置为NSLineBreakByTruncatingTail。

上一篇下一篇

猜你喜欢

热点阅读