iOS lable设置富文本后在最后一行没有显示省略号的问题解决

我们在开发的中,有时候为了界面的美观,不论是新闻类、购物类还是阅读类app,因为文字量比较大,不能完全显示,就会在末尾显示省略号(如图一),我们都知道,如果不设置富文本的情况下,label的属性默认是在最后添加省略号的,但是通过富文本的形式设置行间距后,省略号就不会再显示(如图二),这样的效果会给用户带来一定的阅读障碍,所以我们需要解决这个问题,解决后效果展示(如图三)


默认样式:

iOS lable设置富文本后在最后一行没有显示省略号的问题解决_第1张图片

图一



添加行间距样式:

iOS lable设置富文本后在最后一行没有显示省略号的问题解决_第2张图片

图二



解决添加行间距后,末尾显示省略号样式:

iOS lable设置富文本后在最后一行没有显示省略号的问题解决_第3张图片

图三



解决方法:

通过代码的运行,我们可以看出在设置富文本之后,lable的lineBreakMode属性样式被更改,我们只需要将lineBreakMode的样式改回省略号在末尾显示,就可以解决设置富文本之后在文末显示省略号的问题,代码如下:

- (void)viewDidLoad {
    [super viewDidLoad];
    
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(20, 120, [UIScreen mainScreen].bounds.size.width-40, 200)];
    label.layer.borderColor = [UIColor darkGrayColor].CGColor;
    label.font = [UIFont systemFontOfSize:24.0f];
    label.layer.borderWidth = 0.5f;
    label.numberOfLines = 3;
    label.text = @"月考终于考完了,我花了九牛二虎之力,却还是考得不理想,我也只能“尽人事,听天命”,可是却难以忍受失败的痛苦滋味";
    [self.view addSubview:label];
    NSLog(@"未设置富文本的情况下的默认的lineBreakMode样式 : %ld",(long)label.lineBreakMode);
    
    //富文本方式设置行间距
    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]init];
    paragraphStyle.lineSpacing = 10.0f;
    NSDictionary *attributes = @{ NSFontAttributeName:[UIFont systemFontOfSize:24.0f], NSParagraphStyleAttributeName:paragraphStyle};
    label.attributedText = [[NSAttributedString alloc]initWithString:label.text attributes:attributes];
    [label sizeToFit];
    NSLog(@"设置富文本后,lineBreakMode样式 : %ld",(long)label.lineBreakMode);
    
    //将lineBreakMode样式改回在末尾显示省略号的样式
    label.lineBreakMode = NSLineBreakByTruncatingTail;
    
    /*
    NSParagraphStyle
    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"
    } NS_ENUM_AVAILABLE(10_0, 6_0);
     */
}


你可能感兴趣的:(iOS开发之疑难)