Storyboard und erweiterbare Textansicht
-
21-12-2019 - |
Frage
Ich habe versucht, erweiterbar einzurichten textView
im Storyboard-Einsatz autolayout
.
So richte ich die Einschränkungen ein:
Das Feld neben „Beschreibung“ ist UITextView
.Ich möchte, dass es erweitert wird, je nachdem, wie viel Zeilentextfeld enthält.
Die Baumstruktur der Ansicht ist:UIView
-> UITextView
Und ich mache es jetzt, indem ich:
- (void)textViewDidChange:(UITextView *)textView {
CGFloat fixedWidth = textView.frame.size.width;
CGSize newSize = [textView sizeThatFits:CGSizeMake(fixedWidth, MAXFLOAT)];
CGRect newFrame = textView.frame;
newFrame.size = CGSizeMake(fmaxf(newSize.width, fixedWidth), newSize.height);
textView.frame = newFrame;
}
Und es erweitert die UITextView
wie erwartet am unteren Rand der übergeordneten Ansicht.Aber meine Aufgabe ist:
- Erweitern Sie das Textfeld wie erwartet.
- Erweitere das
height
der übergeordneten Ansicht auch, um den unteren Rand zu speichern.
Wie Sie sehen können, spiele ich mit frame
Aber ich habe das Gefühl, dass ich es mithilfe von Einschränkungen tun muss.Können Sie eine geeignete Lösung vorschlagen?
Lösung
Versuche Folgendes :
- Höhenbeschränkung hinzufügen
parentView
vonUITextView
- Verbinden
IBOutlet
zu dieser Höhenbeschränkung - Aktualisieren Sie diese Einschränkung programmgesteuert in
textViewDidChange:
Methode
Andere Tipps
Es ist möglich, auf die programmgesteuerte Aktualisierung der Einschränkung zu verzichten.Der Schlüssel besteht darin, das Feld „Bildlauf aktiviert“ in der Textansicht zu deaktivieren und die Höhenbeschränkung der Ansicht so festzulegen, dass sie größer oder gleich der ursprünglichen Konstante ist.