欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

【原】UILabel 设置了 attributedText 后省略号不显示

程序员文章站 2022-06-19 19:53:44
在开发中,对于一个 我们都会设置 属性。 我在开发中就遇到个比较有意思的问题,所以就写了这篇博客,与大家共勉! 对于一个 ,我先设置了 ,然后设置了 内容,就是为了让超出显示范围的内容显示成省略号。 但是现象却是,在内容足够多的的情况下,内容是被直接切掉无法显示的内容,并没有显示省略号,如下图: 好 ......

在开发中,对于一个 uilabel 我们都会设置 linebreakmode 属性。
我在开发中就遇到个比较有意思的问题,所以就写了这篇博客,与大家共勉!

对于一个 uilabel ,我先设置了 self.titlelbl.linebreakmode = nslinebreakbytruncatingtail ,然后设置了 attributedtext 内容,就是为了让超出显示范围的内容显示成省略号。

但是现象却是,在内容足够多的的情况下,内容是被直接切掉无法显示的内容,并没有显示省略号,如下图:
【原】UILabel 设置了 attributedText 后省略号不显示

好了,bug来了,各种google,原来是在设置 attributedtext 的时候,之前设置的 linebreakmode 会失效,所以出现上述的问题。

问题解决办法:
在设置 attributedtext 后,在对 linebreakmode 进行一下设置,这样就会出现想要的结果了。

具体代码如下:

nsattributedstring * attrstr = [[nsattributedstring alloc] initwithdata:[model.title datausingencoding:nsunicodestringencoding] options:@{ nsdocumenttypedocumentattribute: nshtmltextdocumenttype } documentattributes:nil error:nil];
self.titlelbl.attributedtext = attrstr;
self.titlelbl.linebreakmode = nslinebreakbytruncatingtail;