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 einemNSViewFrameDidChangeNotificationBerechnen 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?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage