Frage

Ich habe versucht, erweiterbar einzurichten textView im Storyboard-Einsatz autolayout.

So richte ich die Einschränkungen ein:

enter image description here enter image description here

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:

  1. Erweitern Sie das Textfeld wie erwartet.
  2. 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?

War es hilfreich?

Lösung

Versuche Folgendes :

  • Höhenbeschränkung hinzufügen parentView von UITextView
  • 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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top