Meine App besteht aus einer NSScrollView
, deren Dokumentansicht eine Anzahl von vertikal gestapelten NSTextViews
enthält - die sich jeweils in vertikaler Richtung ändern, wenn Text hinzugefügt wird.Auto-Layout mit expandierenden NSTextViews verwenden
Derzeit wird dies alles in Code verwaltet. Die NSTextViews
Größe ändert sich automatisch, aber ich beobachte ihre Größenanpassung mit einem NSViewFrameDidChangeNotification
, rekaliere alle ihre Ursprünge, so dass sie sich nicht überschneiden, und ändere ihre Superansicht (die Dokumentenansicht der Bildlaufansicht), so dass sie alle passen und gescrollt werden können.
Dies scheint, als wäre es der perfekte Kandidat für das automatische Layout! Ich setze NSLayoutConstraints
zwischen der ersten Textansicht und ihrem Container, der letzten Textansicht und ihrem Container und jeder Textansicht untereinander. Wenn dann eine Textansicht wächst, "drückt" sie automatisch die Ursprünge der darunter liegenden Textansichten nach unten, um die Einschränkungen zu erfüllen, wodurch schließlich die Größe der Dokumentansicht wächst, und alle sind glücklich!
Außer, es scheint, es gibt keine Möglichkeit, eine NSTextView
automatisch wachsen zu lassen, wie Text in einem Constraints-basierten Layout hinzugefügt wird? Unter Verwendung der exakt gleichen NSTextView
, die automatisch erweitert, wie Text zuvor eingegeben wurde, wenn ich keine Beschränkung für seine Höhe angeben, wird es auf 0 zurückgesetzt und wird nicht angezeigt. Wenn ich eine Integritätsbedingung, selbst eine Ungleichung wie> = 20, festlege, bleibt sie bei dieser Größe hängen und wächst nicht, wenn Text hinzugefügt wird.
Ich vermute, dies hat mit NSTextView Implementierung von -intrinsicContentSize
zu tun, die standardmäßig (NSViewNoInstrinsicMetric, NSViewNoInstrinsicMetric)
zurückgibt.
Also meine Fragen: Wenn ich NSTextView
Unterklassen intrinsicContentSize
basierend auf dem Layout meines Textes zurückgeben würde, würde mein Auto-Layout dann funktionieren wie erwartet?
Gibt es irgendwelche Hinweise auf die Implementierung intrinsicContentSize
für eine vertikale Änderung der Größe NSTextView?
Könnten Sie einige Grafik/Screenshot hinzufügen/Wireframe zum besseren Verständnis der Einrichtung bitte? Haben Sie versucht, die Texthöhe zu berechnen und sie in "intrinsicContentSize" zurückzugeben? – JJD