UITextView inserción de contenido
He encontrado algo un poco extraño con contentInsets
Tengo un UITextView en mi storyboard con un contentInset de 50 a la izquierda, ya que estoy tratando de agregar algo de relleno a mi uitextview
Sin embargo, una barra de desplazamiento aparece en la parte inferior del uitextview, como se muestra a continuación en esta prueba:
Tenía la impresión de que contentInset aplasta el uitextview sin causar esta barra de desplazamiento horizontal, así que ¿cómo puedo eliminar la necesidad de la barra de desplazamiento horizontal y haz visible todo visible el recuadro Y todo el texto en el uitextview visible sin la necesidad de esta barra de desplazamiento.
N.b.: No estoy preguntando por evitar el 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
Hay no diferencia visible entre la vista con el código añadido que antes de que se añadió, por lo que algo va mal! (Gracias)
2 answers
ACTUALIZACIÓN: Esta solución está desactualizada a partir de iOS 7.
Ver esta respuesta a continuación. En iOS 7.0, el textContainerInset
propiedad en UITextView
se introdujo:
textView.textContainerInset = UIEdgeInsetsMake(0, 50, 0, 0);
Solución previa a iOS 7:
Tenía la impresión de que contentInset aplasta el uitextview sin causar esta barra de desplazamiento horizontal...
Me temo que así no es como contentInset
funciona con un UITextView
. Ver La documentación de Apple para contentInset
donde dice:
La distancia a la que está insertada la vista de contenido desde la vista de desplazamiento que encierra... Utilice esta propiedad para agregar al área de desplazamiento alrededor del contenido.
El contentInset
es añadido alrededor del contenido.
Puede cambiar el contentSize
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 manera I haber sido capaz de lograr la apariencia de relleno horizontal en un UITextView
es colocarlo dentro de un contenedor UIView
. En su caso, simplemente cree un 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 su vista de texto, pero de la captura de pantalla anterior no parece que eso 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
- Cosas que se aprenden de las Notas de ingeniería inversa.app (ver sección "iPadding")
Espero que eso ayude,y si alguien puede encontrar una solución mejor, ¡me encantaría escucharlo!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:47:19
En iOS 7 UITextView
se basa en TextKit y tiene una nueva propiedad textContainerInset
. Se comporta tal como usted esperaría:
UITextView *textView = ...;
// Left inset of 50 points
textView.textContainerInset = UIEdgeInsetsMake(0.0, 50.0, 0.0, 0.0);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-18 16:28:38