前言
最近开发中富文本、图文混排用的比较多,发现了一个小问题。UILabel
在文字布局上容易出现一行不显示满就换行的情况。查了半天资料终于找到了解决方法。
未做任何处理的情况
UILabel *label = UILabel.new;
label.backgroundColor = [UIColor blueColor];
label.font = [UIFont boldSystemFontOfSize:13];
label.numberOfLines = 2;
label.textColor = [UIColor whiteColor];
label.text = @"Azazie Dora Dora JDK";
CGSize size = [label sizeThatFits:CGSizeMake(120, CGFLOAT_MAX)];
label.frame = CGRectMake(0, 100, 120, size.height);
[self.view addSubview:label];
效果图:
nohandle.jpg
可以看到,第一行还有很多空隙,但是第三个单词就不显示在第一行了。
处理之后
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"NSAllowsDefaultLineBreakStrategy"];
[[NSUserDefaults standardUserDefaults] synchronize];
通过NSUserDefaults
设置NSAllowsDefaultLineBreakStrategy
属性为No,系统就不会做适配了。
效果图:
handle.jpg
还有种比较笨的方法,就是把UILabel
换成UITextView
,但是成本太高了。
网友评论