2013-01-21 123 views
8

工作我有一些代碼:動態更改的UILabel寬度不與自動佈局

CGRect currentFrame = textLabel.frame; 
CGSize max = CGSizeMake(textLabel.frame.size.width, 3000); 
CGSize expected = [[textLabel text] sizeWithFont:textLabel.font constrainedToSize:max lineBreakMode:textLabel.lineBreakMode]; 
currentFrame.size.height = expected.height; 
textLabel.frame = currentFrame; 

expected.height = expected.height + 70; 

[scrollView setContentSize:expected]; 

爲textLabel置於其內的UIScrollView顯示多行文字信息。

在舊版本的應用程序中,沒有4英寸的屏幕支持,一切都很完美。 但現在,不幸的是,調整UILabel不起作用。

也許,有人可以建議我,我應該改變什麼?

謝謝。

+1

爲什麼不用'UITextField'控件呢? – holex

回答

27

使用AutoLayout時,不應更新框架屬性,而應修改視圖上的約束條件。

另一方面,你也可以讓AutoLayout爲你工作。確保標籤的numberOfLines屬性設置爲0,高度約束爲Greater Than or Equal(> =)。這樣佈局將在標籤上設置新文字後自動更新。

+0

非常有幫助!謝謝! –

+4

'大於或等於'非常有幫助! – Vincent

+0

它正在工作。它對我的代碼很有用。 –