La mia app è costituita da un NSScrollView
la cui vista del documento contiene un numero di impilati verticalmente NSTextViews
- ognuno dei quali viene ridimensionato in direzione verticale quando viene aggiunto del testo.Utilizzo di Autolayout con NSTextViews espandibile
Attualmente, questo è tutto gestito in codice. Il NSTextViews
ridimensiona automaticamente, ma osservo il loro ridimensionamento con un NSViewFrameDidChangeNotification
, ricalcola tutte le loro origini in modo che non si sovrappongano e ridimensionino la loro superview (la vista del documento della vista di scorrimento) in modo che tutte si adattino e possano scorrere.
Questo sembra essere il candidato perfetto per l'autolayout! Ho impostato NSLayoutConstraints
tra la prima visualizzazione di testo e il relativo contenitore, l'ultima visualizzazione di testo e il relativo contenitore e ciascuna vista di testo tra loro. Quindi, se una qualsiasi vista di testo cresce, automaticamente "spinge verso il basso" le origini delle viste di testo sottostanti per soddisfare i vincoli, in definitiva aumentando le dimensioni della vista del documento, e tutti sono felici!
Tranne, sembra che non sia possibile far crescere automaticamente un NSTextView
come testo in un layout basato su vincoli? Usando lo stesso identico NSTextView
che si espandeva automaticamente quando il testo veniva inserito prima, se non si specifica un vincolo per la sua altezza, si imposta automaticamente su 0 e non viene mostrato. Se specifichi un vincolo, anche una disuguaglianza come> = 20, rimane bloccato a quella dimensione e non cresce man mano che il testo viene aggiunto.
Sospetto che questo abbia a che fare con l'implementazione di NSTextView di -intrinsicContentSize
, che per impostazione predefinita restituisce (NSViewNoInstrinsicMetric, NSViewNoInstrinsicMetric)
.
Quindi le mie domande: se sottoclassi NSTextView
per restituire uno intrinsicContentSize
più significativo in base al layout del mio testo, il mio autolayout funzionerà come previsto?
Eventuali puntatori sull'implementazione di intrinsicContentSize
per un NSTextView a ridimensionamento verticale?
Potrebbe aggiungere qualche grafica/screenshot/wireframe per facilitare la comprensione della configurazione per favore? Hai provato a calcolare l'altezza del testo e restituirlo in 'intrinsicContentSize'? – JJD