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: introduzca la descripción de la imagen aquí

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)

Author: H Bellamy, 2013-09-01

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:

UITextView cortado 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 :

UITextView 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 escucharlo!

 73
Author: Steph Sharp,
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);
 163
Author: Florian,
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