/ / UIScrollView no funciona como la mayoría de las vistas de desplazamiento: iOS, Objective-C, uiscrollview

UIScrollView no funciona como la mayoría de las vistas de desplazamiento: ios, object-c, uiscrollview

Estoy tratando de hacer que mi vista de desplazamiento llegue alparte inferior de mi texto sin tener que "forzar desplazamiento". Entonces, cuando me desplazo hacia abajo, la barra de desplazamiento a la derecha se detiene antes de llegar a la parte inferior del texto restante. Luego tengo que desplazarme nuevamente con fuerza (para que la barra de desplazamiento a la derecha se encoja, revelando el texto restante). Esperemos que alguien haya encontrado esto. No quiero forzar el desplazamiento. Quiero que todo se muestre de forma limpia.

UIScrollView *theScroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 568.0f)];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(17.0f, 150.0f, 286.0f, 568.0f)];

label.text = @" a very large portion of text ";

label.backgroundColor = [UIColor clearColor];
label.font = [UIFont fontWithName:@"Chalkduster" size:16.0];
label.lineBreakMode = NSLineBreakByWordWrapping;
label.numberOfLines = 0;
[label sizeToFit];
[theScroll setShowsVerticalScrollIndicator:NO];
theScroll.contentSize = CGSizeMake(theScroll.contentSize.width, label.frame.size.height);
[theScroll addSubview:label];
[self.view addSubview:theScroll];

Esto es todo en el viewDidLoad método.

Respuestas

0 para la respuesta № 1

Dos cosas no parecen estar bien.

  1. Usted establece la etiqueta "s origin.y a 150. ¿Quería que la etiqueta comenzara tan lejos de la parte superior del área de contenido de la vista de desplazamiento?
  2. Configura la vista de desplazamiento "s contentSize.height ser igual a la altura de la etiqueta. Esto entra en conflicto con el n. ° 1. contentSize.height debe ser lo suficientemente alto para todo el contenido.

Suponiendo que el n. ° 1 es correcto, el n. ° 2 debe establecerse como:

theScroll.contentSize = CGSizeMake(theScroll.contentSize.width, CGRectGetMaxY(label.frame));

Recuerde, la parte inferior de la etiqueta será su origen + su altura, no solo su altura.