2017-05-28 39 views
1

我有一個視圖,裏面有一個UILabel。我希望視圖根據文本的長度來改變它的寬度。 我試過的是先在我的UILabel上執行SizeToFit(),希望這會改變它的框架,然後把標籤框放入視圖的框架中。 這不起作用,我猜是因爲自動佈局的限制。 這是我試過的代碼:試圖根據UILabel的文本大小更新父視圖框架

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

似乎很明顯,這是行不通的,因爲我敢肯定的大小,以適應不改變框架。有什麼辦法可以做到這一點?

回答

1

讓您UIView's寬度約束的IBOutlet,然後簡單地爲什麼你甚至使用該功能的寬度約束不斷改變的UILabel

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

真棒的想法。將嘗試一下 – Eyzuky

0

寬度。你的觀點應該有限制。

領導=頂部=底部= 8和尾> = 20

你的標籤所應有的一切等於限制爲5

現在嘗試在你的標籤添加任何文字,你會得到更新不使用此功能的視圖框架。只需嘗試一次。

+0

我會考慮這一點。聽起來不錯。雖然你的答案涉及到幻數,我使用相對約束,所以我需要翻譯它。 – Eyzuky

+0

這些數字就是例子。一旦你看到適當的結果,根據你的需要修改它們。 –

+0

明天會更新:) – Eyzuky

相關問題