2015-07-10 62 views
-1

這可能是一個簡單的問題,但我有點卡在這個。我在我的一個標籤中給出了一個按鈕的約束leading top trailing and bottom。在我的情況下,當我刪除底部約束多線標籤正常工作,但是當我添加按鈕約束,那麼它不會破壞線。同樣的事情在另一個地方工作,我也無法理解這個問題。IOS Autolayout MultiLine ULabel問題

enter image description here

+0

您可以將高度限制設置爲大於等於並檢查。它可能會解決你的問題。 – Hindu

+0

我該如何設置高度將增加或減少的標籤的高度? –

+0

您可以在開始時將高度設置爲0,並將標記高度約束設置爲> =,因此如果您的文本分配給標籤,高度將根據文本高度增加。 – Hindu

回答

0

在能多的UILabel,你需要設置適當的高度爲ContentSize。

如果UILabel的contentSize不符合高度,那就不會破壞 !

因此,您需要計算UILabelView文本的高度。你可以從下面的代碼中做到這一點:

func heightForView(text:String, #font:UIFont, #width:CGFloat) -> CGFloat{ 
    let label:UILabel = UILabel(frame: CGRectMake(0, 0, width, CGFloat.max)) 
    label.numberOfLines = 0 
    label.lineBreakMode = NSLineBreakMode.ByWordWrapping 
    label.font = font 
    label.text = text 

    label.sizeToFit() 
    return label.frame.size.height 
} 

let font = UIFont(name: "Helvetica", size: 20.0) 

var height = heightForView("This is just a load of text", font: font, width: 100.0) 

然後根據約束文本增加你的UILabel的高度。例如:

我希望你已經採取了IBOutlet UILabel的高度約束。所以,要更新高度,請參閱以下代碼:

_constLabelHeight.constant = label.frame.size.height; 

希望這有助於您!

+0

這是爲目標c,我不添加任何約束使用代碼。 –