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

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

作者: Stormstout | 来源:发表于2019-12-26 15:06 被阅读0次
    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 富文本设置行数后没有...问题

          本文链接:https://www.haomeiwen.com/subject/jdokoctx.html