iOS: Autolayout que hace que UIScrollView no se desplace

He configurado un UIScrollView con el que quiero mostrar 12 imágenes (solo 8 en forma de pantalla) dispuestas horizontalmente. En la siguiente image, puede ver el problema que tengo (lo que hace que mi vista de desplazamiento no se desplace), mis restricciones y el UIScrollView que he agregado en el guión gráfico:

Captura de pantalla del guión gráfico que muestra las limitaciones

He llamado al siguiente método en -(void)viewDidLoad , donde "configuro" mi scrollview (itemList es mi propiedad de vista de desplazamiento y itemNames un array con los nombres de las imágenes):

 - (void)setupHorizontalScrollView { self.itemList.delegate = self; [self.itemList setTranslatesAutoresizingMaskIntoConstraints:NO]; [self.itemList setBackgroundColor:[UIColor blackColor]]; [self.itemList setCanCancelContentTouches:NO]; self.itemList.indicatorStyle = UIScrollViewIndicatorStyleWhite; self.itemList.clipsToBounds = NO; self.itemList.scrollEnabled = YES; self.itemList.pagingEnabled = NO; NSInteger tot=0; CGFloat cx = 0; for (; ; tot++) { if (tot==12) { break; } UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[self.itemNames objectAtIndex:tot]]]; CGRect rect = imageView.frame; rect.size.height = 40; rect.size.width = 40; rect.origin.x = cx; rect.origin.y = 0; imageView.frame = rect; [self.itemList addSubview:imageView]; cx += imageView.frame.size.width; } [self.itemList setContentSize:CGSizeMake(cx, [self.itemList bounds].size.height)]; } 

He agregado el [self.itemList setTranslatesAutoresizingMaskIntoConstraints: NO]; porque vi esta sugerencia en otras publicaciones, pero no funciona con o sin ella. La única forma en que funciona es si desactivo el uso de AutoLayout en el guión gráfico, pero eso mueve el UIImageView que utilizo para mirar como una barra de navigation en la parte inferior de la pantalla. Ya no sé qué hacer, se agradece cualquier ayuda 🙂

Dos soluciones:

  1. Cree diferentes restricciones que puedan satisfacerse simultáneamente (tendrá que editar). Creo que el problema es que tu espacio inferior y las restricciones de espacio superior son mutuamente excluyentes. por favor, elimine uno e intente nuevamente. Si esto es difícil para usted, intente agregar otra UIView para contener UIScrollView para ayudar a administrar sus restricciones, puede parecer extraño al principio, pero a veces agregar otra vista para contener su vista lo hace más simple en cada nivel.

  2. Desactive Autolayout y cambie las máscaras de UIImageView de su UIImageView para que sea lo que desee.

Intente configurar el tamaño de contenido de su scrollView en el método "viewDidLayoutSubviews" manteniendo las autolayouts configuradas.

 -(void)viewDidLayoutSubviews { [self.itemList setContentSize:CGSizeMake(requinetworking_width, requinetworking_height)]; } 

Insertar: [scrollView setContentSize:CGSizeMake(x,y)]; en el siguiente método:

 -(void)viewWillAppear:(BOOL)animated