尝试根据UILabel的文本大小更新父视图框

时间:2017-05-28 15:14:31

标签: swift autolayout uilabel

我有一个观点,在里面我有一个UILabel。我希望视图根据文本的长度更改其宽度。 我尝试的是首先在我的UILabel上执行SizeToFit(),希望这会改变它的框架,然后将标签框架放入视图的框架中。 这不起作用,我猜是因为自动布局限制。 这是我试过的代码:

private func example(){
    self.labelInsideView.sizeToFit()
    viewThatContainsLabel.frame = labelInsideView.frame
    self.layoutIfNeeded()
}

这似乎很明显,这不会起作用,因为我非常确定合适的尺寸不会改变框架。有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:1)

制作IBOutlet宽度约束的UIView's,然后只需将宽度约束常量更改为宽度UILabel

self.labelInsideView.sizeToFit()
self.widthConstraintOfView.constant = labelInsideView.frame.size.width
self.layoutIfNeeded()

答案 1 :(得分:0)

为什么你甚至使用这个功能。您的视图应该有约束。

Leading = Top = Bottom = 8,Trailing> = 20

您的标签应具有等于5的所有约束。

现在尝试在Label中添加任何文本,您将获得视图的更新框架而不使用此功能。试试这个。