Verwenden von Autolayout mit dem Erweitern von NSTextViews
Meine App besteht aus einemNSScrollView
deren Dokumentansicht eine Reihe von vertikal gestapelten enthältNSTextViews
- Jede Größe wird in vertikaler Richtung geändert, wenn Text hinzugefügt wird.
Derzeit wird dies alles in Code verwaltet. DasNSTextViews
Automatisch die Größe ändern, aber ich beobachte ihre Größenänderung mit einemNSViewFrameDidChangeNotification
Berechnen Sie alle ihre Ursprünge neu, damit sie sich nicht überlappen, und ändern Sie die Größe ihrer Übersicht (der Dokumentansicht der Bildlaufansicht), damit sie alle passen und zu denen gescrollt werden kann.
Dies scheint der perfekte Kandidat für Autolayout zu sein! ich setzeNSLayoutConstraints
zwischen der ersten Textansicht und ihrem Container, der letzten Textansicht und ihrem Container und jeder Textansicht untereinander. Wenn dann eine Textansicht größer wird, werden die Ursprünge der darunter liegenden Textansichten automatisch "nach unten verschoben", um Einschränkungen zu erfüllen und letztendlich die Größe der Dokumentansicht zu erhöhen, und alle sind glücklich!
Abgesehen davon scheint es keine Möglichkeit zu geben, eine zu erstellenNSTextView
automatisch wachsen, wenn Text in einem einschränkungsbasierten Layout hinzugefügt wird? Verwenden Sie genau das gleicheNSTextView
Wenn ich keine Einschränkung für die Höhe spezifiziere, wird der Wert auf 0 gesetzt und nicht angezeigt. Wenn ich eine Einschränkung spezifiziere, selbst eine Ungleichung wie> = 20, bleibt sie bei dieser Größe hängen und wächst nicht, wenn Text hinzugefügt wird.
Ich vermute, dass dies mit der Implementierung von NSTextView zu tun hat-intrinsicContentSize
, die standardmäßig zurückgibt(NSViewNoInstrinsicMetric, NSViewNoInstrinsicMetric)
.
Also meine Fragen: wenn ich Unterklassen habeNSTextView
um eine aussagekräftigere zurückzugebenintrinsicContentSize
Funktioniert mein Autolayout dann, basierend auf dem Layout meines Texts, wie erwartet?
Hinweise zur ImplementierungintrinsicContentSize
für eine vertikale Größenänderung von NSTextView?