2013-01-21 18 views
8

Ich habe einige Code:dynamisch ändern UILabel Breite nicht mit automatischen Layout arbeiten

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 innerhalb UIScrollView platziert mehrzeiligen Textinformationen anzuzeigen.

In älteren Version der Anwendung, ohne 4-Zoll-Bildschirm-Unterstützung, war alles perfekt. Leider funktioniert die Größenanpassung von UILabel jetzt leider nicht.

Vielleicht kann mir jemand raten, was soll ich ändern?

Danke.

+1

Warum verwenden Sie nicht stattdessen das Steuerelement 'UITextField'? – holex

Antwort

27

Wenn Sie AutoLayout verwenden, sollten Sie die Rahmeneigenschaft nicht aktualisieren, sondern die Einschränkungen in einer Ansicht ändern.

Auf der anderen Seite könnten Sie auch AutoLayout für Sie arbeiten lassen. Stellen Sie sicher, dass die numberOfLines -Eigenschaft des Labels auf 0 festgelegt ist und die Höhenkondition vom Typ Greater Than or Equal (> =) ist. Auf diese Weise wird das Layout automatisch aktualisiert, nachdem neuer Text auf einem Etikett gesetzt wurde.

+0

Sehr hilfreich! Vielen Dank! –

+4

'Größer als oder gleich 'sehr hilfreich !!! – Vincent

+0

es funktioniert. Es ist nützlich für meinen Code. –

Verwandte Themen