我正在制作一款不使用故事板的应用。该应用程序有一个很长的文本,所以我不能在一行上获得空间。该应用程序适用于iPad和iPhone。 adjustSizeToFit = true
不起作用,是否有一个用多行来调整标签大小的元数据?
答案 0 :(得分:3)
UILabel
上没有名为adjustSizeToFit
的属性。你确定你不是adjustsFontSizeToFitWidth
吗?如果您查看文档,请说:
通常,标签文本使用您在font属性中指定的字体绘制。但是,如果此属性设置为true,并且text属性中的文本超出了标签的边界矩形,则接收器将开始缩小字体大小,直到字符串适合或达到最小字体大小。在iOS 6及更早版本中,仅当numberOfLines属性设置为1时,此属性才有效。
我不确定你想要的是什么。
如果您想要一个具有任意行数的UILabel
,其中文本包含在一定宽度内,请继续阅读:
您所做的将取决于您是否使用AutoLayout:
非自动布局
只需使用:
let size = label.sizeThatFits(CGSize(width: myWidth, height: CGFloat.max))
// CGFloat.max, because we don't want to limit the UILabel's height.
label.frame.size = size
<强>自动版式强>
首先,您应该将numberOfLines
设置为零。
其次,您需要告诉AutoLayout每行的长度,不默认为标签的宽度。为此,您需要一个UILabel
子类:
class myLabel : UILabel {
override func layoutSubviews() {
// 1. Get the label to set its frame correctly:
super.layoutSubviews()
// 2. Now the frame is set we can get the correct width
// and set it to the preferredMaxLayoutWidth.
self.preferredMaxLayoutWidth = self.frame.width
}
}