UILabel的单行显示不满换行

前言

最近开发中富文本、图文混排用的比较多,发现了一个小问题。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,但是成本太高了。

你可能感兴趣的:(UILabel的单行显示不满换行)