ios objective-c uiscrollview uikit

ios - UITextView contenido insertado



objective-c uiscrollview (2)

En iOS 7, UITextView se basa en TextKit y tiene una nueva propiedad textContainerInset . Se comporta como usted esperaría:

UITextView *textView = ...; // Left inset of 50 points textView.textContainerInset = UIEdgeInsetsMake(0.0, 50.0, 0.0, 0.0);

Me he encontrado con algo un poco extraño con contentInsets

Tengo un UITextView en mi guión gráfico con un contenido de 50% restante, mientras intento agregar un poco de relleno a mi uitextview

Sin embargo, aparece una barra de desplazamiento en la parte inferior de uitextview, como se muestra a continuación en esta prueba:

Tenía la impresión de que contentInset aplasta la vista uitext sin causar esta barra de desplazamiento horizontal, así que, ¿cómo puedo eliminar la necesidad de la barra de desplazamiento horizontal y hacer todo, la inserción Y todo el texto en la vista uitext, visible sin la necesidad de esto barra de desplazamiento.

NB: no estoy preguntando sobre la prevención del desplazamiento horizontal o no mostrar la barra de desplazamiento (cortando así el texto)

¡Muchas gracias!

Para atomk (UITextView se llama ss)

NSLog(@"Content Size Before %f",self.ss.contentSize.width); Logs: 280 CGSize size=self.ss.contentSize; size.width=size.width-50; [self.ss setContentSize:size]; NSLog(@"Content Size After %f",self.ss.contentSize.width); Logs: 230

No hay una diferencia visible entre la vista con el código agregado que antes de que se agregara, ¡así que algo va mal! (Gracias)


ACTUALIZACIÓN: esta solución está desactualizada a partir de iOS 7.

Vea esta respuesta a continuación . En iOS 7.0, se textContainerInset propiedad UITextView en UITextView :

textView.textContainerInset = UIEdgeInsetsMake(0, 50, 0, 0);

Solución pre-iOS 7:

Tenía la impresión de que contentInset aplasta la vista uitext sin causar esta barra de desplazamiento horizontal ...

Me temo que no es así como funciona contentInset con un UITextView . Consulte la documentación de Apple para contentInset donde dice:

La distancia que se inserta la vista de contenido desde la vista de desplazamiento adjunta ... Use esta propiedad para agregar al área de desplazamiento alrededor del contenido.

El contentInset se agrega alrededor del contenido.

Puede cambiar el contentSize viewDidLayoutSubviews en viewDidLayoutSubviews utilizando el código que ha incluido anteriormente:

- (void)viewDidLayoutSubviews { self.textView.contentInset = UIEdgeInsetsMake(0, 50, 0, 0); NSLog(@"Content Size Before %f",self.textView.contentSize.width); //Logs: 280 CGSize size=self.textView.contentSize; size.width=size.width-50; [self.textView setContentSize:size]; NSLog(@"Content Size After %f",self.textView.contentSize.width); //Logs: 230 }

Sin embargo, esto hace que el texto se corte en el lado derecho:

La mejor forma en que he podido lograr la apariencia de relleno horizontal en un UITextView es colocarlo dentro de un contenedor UIView . En su caso, simplemente cree una UIView del mismo tamaño que su vista de texto actual, y agregue una vista de texto que sea 50px más estrecha dentro de la vista de contenedor.

Esta solución puede causar problemas si tiene un fondo para la vista de texto, pero en la captura de pantalla de arriba no parece que sea un problema para usted.

UITextView (marco en rojo) dentro del contenedor UIView :

Si su UITextView tiene un fondo, vea:

Espero que eso ayude, y si alguien puede encontrar una solución mejor, ¡me encantaría saberlo!