对于可变高度的label,有时候我们进行了设置,但是文本还是加载不全,可能的原因有哪些呢?
1. 比如进行了如下代码设置:
UILabel *yuanwenLabel=[[UILabelalloc]init];
yuanwenLabel.backgroundColor=[UIColorclearColor];
yuanwenLabel.text=_yuanwenStr;
yuanwenLabel.textColor=[UIColorcolorWithRed:68.00/255green:68.00/255blue:68.00/255alpha:1];
[yuanwenLabel setNumberOfLines:0];
CGSize size=CGSizeMake(290,3000);
size=[yuanwenLabel.textsizeWithFont:[UIFontsystemFontOfSize:13]constrainedToSize:sizelineBreakMode:NSLineBreakByCharWrapping];
yuanwenLabel.frame=CGRectMake(15,250, size.width, size.height);
[_scrollViewaddSubview:yuanwenLabel];
可以发现:在对size进行设置时,字体的大小是13.即定义了13号字体的文本所占用的大小。而上述代码并没有对文本的字体大小进行设置,即没有调用 yuanwenLabel setfont: 方法。那么此时系统将文本大小设置成默认的 17号字体。此时可以看出,一篇17号字体的文本,放在13号文本所应占用的大小区域里面,它怎么能加载完全??所以要么把文本字号设置成13,要么把13改成至少17号字体,至少得能盛下系统默认的字号。但是如果这样还显示不全呢?比如一大篇英文文本。。。
2. 针对于这种情况,目前我的理解是,和文档排版有关。如果是一篇纯英文文档,它在换行的时候如果是以整个单词换行,那么会出现大量的空格。这个时候,原来定义的size就放不下全文了,因为空格占用了地方。这个时候,可以在动态定义label的size时,定义的字号稍微比文本的字号大些,以能盛下全文。
如果能找到好的排版方法,能让英文文档换行时,不是以整个单词换行,这样的话,这个问题就不存在了。。经验之谈,如有错误,还望批评指出,我们共同探讨,共同进步!!