Mi aplicación consiste en NSScrollView
, cuya vista del documento contiene una cantidad de NSTextViews
apilados verticalmente, cada uno de los cuales cambia de tamaño en la dirección vertical a medida que se agrega el texto.Uso del ajuste automático con NSTextViews en expansión
Actualmente, todo esto se gestiona en código. El NSTextViews
cambia el tamaño automáticamente, pero observo su cambio de tamaño con NSViewFrameDidChangeNotification
, recalca todos sus orígenes para que no se superpongan y cambia el tamaño de su supervista (la vista de documento de la vista desplazada) para que quepan y se puedan desplazar.
¡Parece que sería el candidato perfecto para el diseño automático! Establecí NSLayoutConstraints
entre la primera vista de texto y su contenedor, la última vista de texto y su contenedor, y cada vista de texto entre sí. Luego, si crece cualquier vista de texto, automáticamente "empuja hacia abajo" los orígenes de las vistas de texto debajo de ella para satisfacer los inconvenientes, en última instancia, aumentando el tamaño de la vista del documento, ¡y todos están felices!
Excepto que parece que no hay forma de hacer que un NSTextView
crezca automáticamente a medida que se agrega texto en un diseño basado en restricciones. Utilizando exactamente el mismo NSTextView
que se expandió automáticamente a medida que se ingresaba texto, si no especifico una restricción para su altura, se convierte en 0 y no se muestra. Si especifico una restricción, incluso una desigualdad como> = 20, permanece estancada en ese tamaño y no crece a medida que se agrega el texto.
Sospecho que esto tiene que ver con la implementación de NSTextView de -intrinsicContentSize
, que de forma predeterminada devuelve (NSViewNoInstrinsicMetric, NSViewNoInstrinsicMetric)
.
Así que mis preguntas: si subclases NSTextView
para devolver un intrinsicContentSize
más significativo según el diseño de mi texto, ¿funcionaría mi autolayout como esperaba?
¿Alguna sugerencia sobre la implementación de intrinsicContentSize
para un NSTextView de tamaño vertical?
¿Es posible añadir un poco de gráfica/pantalla/wireframe para facilitar la comprensión de la configuración por favor? ¿Intentó calcular la altura del texto y devolverlo en 'intrinsicContentSize'? – JJD