解决 iOS 富文本设置行数后没有...问题

1.富文本限制行数和添加段落后,就会发现末尾的...消失
这种情况只出现在限制了行高 并且 设置了段落,这时候再设置UILabel.lineBreakMode = NSLineBreakByTruncatingTail 属性是不起作用的
4行.png
代码如下
///字符串
    NSString *strText = @"余囚北庭,坐一土室。室广八尺,深可四寻。单扉低小,白间短窄,污下而幽暗。当此夏日,诸气萃然:雨潦四集,浮动床几,时则为水气;涂泥半朝,蒸沤历澜,时则为土气;乍晴暴热,风道四塞,时则为日气;檐阴薪爨,助长炎虐,时则为火气;仓腐寄顿,陈陈逼人,时则为米气;骈肩杂遝,腥臊汗垢,时则为人气;或圊溷、或毁尸、或腐鼠,恶气杂出,时则为秽气。叠是数气,当之者鲜不为厉。而予以孱弱,俯仰其间,於兹二年矣,幸而无恙,是殆有养致然尔。然亦安知所养何哉?孟子曰:「吾善养吾浩然之气。」彼气有七,吾气有一,以一敌七,吾何患焉!况浩然者,乃天地之正气也,作正气歌一首。天地有正气,杂然赋流形。下则为河岳,上则为日星。於人曰浩然,沛乎塞苍冥。皇路当清夷,含和吐明庭。时穷节乃见,一一垂丹青。在齐太史简,在晋董狐笔。在秦张良椎,在汉苏武节。为严将军头,为嵇侍中血。为张睢阳齿,为颜常山舌。或为辽东帽,清操厉冰雪。或为出师表,鬼神泣壮烈。或为渡江楫,慷慨吞胡羯。或为击贼笏,逆竖头破裂。是气所磅礴,凛烈万古存。当其贯日月,生死安足论。地维赖以立,天柱赖以尊。三纲实系命,道义为之根。嗟予遘阳九,隶也实不力。楚囚缨其冠,传车送穷北。鼎镬甘如饴,求之不可得。阴房阗鬼火,春院闭天黑。牛骥同一皂,鸡栖凤凰食。一朝蒙雾露,分作沟中瘠。如此再寒暑,百疠自辟易。哀哉沮洳场,为我安乐国。岂有他缪巧,阴阳不能贼。顾此耿耿存,仰视浮云白。悠悠我心悲,苍天曷有极。哲人日已远,典刑在夙昔。风檐展书读,古道照颜色。";
    ///创建label
    UILabel *label = [[UILabel alloc]init];
    ///设置行数
    label.numberOfLines = 0;
    ///设置label文本
    label.text = strText;

    NSLog(@"未设置富文本时,默认的lineBreakMode样式 : %ld == 结果为4 ",(long)label.lineBreakMode);

    ///创建富文本
    NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:strText];
    ///创建段落
    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
    ///调整行间距
    [paragraphStyle setLineSpacing:3];
    [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [strText length])];
    label.attributedText = attributedString;
    [self.view addSubview:label];
    [label mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.offset(10);
        make.right.offset(-10);
        make.top.offset(120);
    }];
2.正常使用富文本,没有设置行高的情况如下图所示
正气歌.png
3.解决方法 设置段落格式
///设置段落格式   不设置的话文本超过行高不会出现...
    [paragraphStyle setLineBreakMode:NSLineBreakByTruncatingTail];
4.段落格式类型
typedef NS_ENUM(NSInteger, NSLineBreakMode) {
    NSLineBreakByWordWrapping = 0,         // Wrap at word boundaries, default
    NSLineBreakByCharWrapping,        // Wrap at character boundaries
    NSLineBreakByClipping,        // Simply clip
    NSLineBreakByTruncatingHead,    // Truncate at head of line: "...wxyz"
    NSLineBreakByTruncatingTail,    // Truncate at tail of line: "abcd..."
    NSLineBreakByTruncatingMiddle    // Truncate middle of line:  "ab...yz"
}

你可能感兴趣的:(解决 iOS 富文本设置行数后没有...问题)