2016-06-20 8 views
0

Ich möchte nicht eine Y-Position Einschränkung festlegen, weil ich brauche die Ansichten relativ zueinander, da ich ein UITextView haben muss und sollte Ändern Sie den Wert dynamisch anhand der Anzahl der Textzeilen. Das tut es aber nicht. Ich kann es zwingen, es zu tun, indem ich sizeToFit() auf dem UITextView aufruft, aber dann überlappt es die Ansichten unten.iOS-Storyboard - Auto-Layout wird nicht skalieren und neu positionieren Subviews

Xcode ignoriert mich, um Mehrdeutigkeiten zu reduzieren und es gibt rote Linien überall im View-Controller, aber es macht keinen Sinn, manuell eine Y-Positionsbeschränkung zu haben, wenn diese dynamisch sein muss.

So ist meine Frage wie I 1. Machen Sie meine UITextView seiner Höhe die Größe nach der Anzahl der Zeilen des Textes erhöht 2. die Ansichten Machen darunter automatisch nach unten gedrückt bekommen so die UITextView sie nicht überlappen.

Ich habe mehrere Antworten gelesen und es geschafft, 1 zu tun, aber nicht die andere.

Lösung in Swift:

let sizeThatFitsTextView = textView.sizeThatFits(CGSizeMake(textView.frame.size.width, textView.frame.size.height)) 
textViewHeightConstraint.constant = sizeThatFitsTextView.height 

Antwort

1

1) Disable the scroll of Textview von Storyboard oder durch Codierung.

2) Erstellen Sie eine outlet für textview's height constraint. Ändern Sie die Höheneinschränkung programmgesteuert von der textView-Delegatmethode, wenn Textänderungen basierend auf Berechnungen auftreten.

CGSize sizeThatFitsTextView = [TextView sizeThatFits:CGSizeMake(TextView.frame.size.width, MAXFLOAT)]; 

TextViewHeightConstraint.constant = sizeThatFitsTextView.height; 
+0

Danke. Das hat gut funktioniert. – Questioner

+0

@Questioner Willkommen :-) –

Verwandte Themen