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:
- Cómo configurar la inserción de contenido de UITextView como la aplicación Notes
- Las cosas que se aprenden de Notes.app de ingeniería inversa (consulte la sección "iPadding")
Espero que eso ayude, y si alguien puede encontrar una solución mejor, ¡me encantaría saberlo!