UITextView实现中文和英文不换行&省略号展示

691 阅读1分钟

在使用UILabel展示2行文字的时候,我们经常会遇到末尾英文的时候会自动换行,这样会显得页面视图比较空旷,影响用户体验,如图所示:

我需要做的是要将每一行尽可能补充完全,不要展示的这么空旷。要从2点去解决,第一是要有省略号,第二是将222222222或者djhasjdjasbhjdbajdbjab不要当做一个文本字符串去考虑。我们直接上代码,代码如下:

UITextView *textView = [[UITextView alloc]initWithFrame:CGRectMake(10, 200, 200, 200)];
    textView.backgroundColor = [UIColor greenColor];
    textView.text = @"试听课222222222222222想cvtybunifcgvhjbnkgvhbjn艾叶草一成不变才不被苏试听课222222222222222想cvtybunifcgvhjbnkgvhbjn艾叶草一成不变才不试听课222222222222222想cvtybunifcgvhjbnkgvhbjn艾叶草一成不变才不试听课222222222222222想cvtybunifcgvhjbnkgvhbjn艾叶草一成不变才不联";
    //控制展示行数
    textView.textContainer.maximumNumberOfLines = 2;
    //保证展示结尾多余用省略号代替
    textView.textContainer.lineBreakMode = NSLineBreakByTruncatingTail;
    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]init];
    //保证字符串的完整性不会因为是英文或者数字的整体换行
    paragraphStyle.lineBreakMode = NSLineBreakByCharWrapping;
    NSDictionary *attributes = @{NSParagraphStyleAttributeName:paragraphStyle};
    textView.attributedText = [[NSAttributedString alloc] initWithString:textView.text attributes:attributes];
 
    [self.view addSubview:textView];

实现效果图如下: