UILabel文本填写框架宽度

时间:2015-01-16 11:40:01

标签: swift uilabel sizetofit

我想使用UILabel

制作排版海报
  • 左边和边距:25
  • 320(设备宽度) - 50(边距之和)= 270(标签宽度框架)

每个标签的字体大小应该更改,以适合270帧宽

我尝试 sizeToFit() adjustsFontSizeToFitWidth = true

var margin = 0;
let label = UILabel(frame: CGRectMake(25 , 72, 270, 70));
label.backgroundColor = UIColor.clearColor();
label.textAlignment = NSTextAlignment.Left;
label.textColor = UIColor.blackColor();
label.numberOfLines = 1;
label.font = UIFont.systemFontOfSize(50.0);
label.text = "Some Text";
label.adjustsFontSizeToFitWidth = true;
self.view.addSubview(label);
margin += 60;

let label2 = UILabel(frame: CGRectMake(25 , CGFloat(72+margin), 270, 70));
label2.backgroundColor = UIColor.clearColor();
label2.textAlignment = NSTextAlignment.Left;
label2.textColor = UIColor.whiteColor();
label2.numberOfLines = 1;
label2.font = UIFont.boldSystemFontOfSize(45.0);
label2.text = "Some Text Longer";
self.view.addSubview(label2);

lable1和label2的屏幕截图 adjustsFontSizeToFitWidth = true

enter image description here

文本应从第一个灰色边框的末尾开始,并在第二个灰色边框的开头结束

2 个答案:

答案 0 :(得分:6)

adjustsFontSizeToFitWidth不会增加标签中字体的大小以适应宽度。

根据Apple的文档,

  

adjustsFontSizeToFitWidth是一个布尔值,表示是否   字体大小应该减少,以使标题字符串适合   标签的边界矩形。

     

通常,标签文本使用您在中指定的字体绘制   字体属性。但是,如果此属性设置为YES,则为文本   在text属性中超出了标签的边界矩形   接收器开始减小字体大小,直到字符串适合或   达到最小字体大小。在iOS 6及更早版本中,此属性为   仅当numberOfLines属性设置为1时才有效。

您可以尝试增加字体的大小以适应框架的宽度。

来源:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/index.html#//apple_ref/occ/instm/UIView/sizeToFit

您还可以使用以下方法迭代查找适合标签的最大尺寸。

How to adjust font size of label to fit the rectangle?

答案 1 :(得分:4)

这应该可以在不改变许多默认值的情况下工作。发布的代码未设置adjustsFontSizeToFitWidth,如下所示:

label.adjustsFontSizeToFitWidth = true