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

3,398 阅读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];

实现效果图如下: