Desplazar un UIScrollView cambia sus frameworks de subvistas.

Mi aplicación utiliza storyboards y autolayout. En un controller de vista, creé un UIScrollView y agregué tres subvistas.

En time de ejecución necesito cambiar los tamaños de las subvistas y reorganizarlos. Inicialmente, los viewDidLayoutSubviews en viewDidLayoutSubviews , y parece funcionar hasta que desploop la vista de desplazamiento. Luego, los frameworks de subvista se cambian nuevamente a los tamaños que se establecen en IB. (Configuro el tamaño de contenido de UIScrollView cuando reorderar las vistas y eliminar todas las UIViewConstraints ).

Los frameworks y Auto Layout no van de la mano. Si está utilizando Auto Layout , deberá reorganizar las restricciones, no los frameworks. Mientras usa Auto Layout Cambiar los fotogtwigs causará algunos efectos extraños y eventualmente volverá a las restricciones que ha creado en la vista UIView original.

Algunas soluciones:

  1. Puede crear una salida para cada limitación como lo haría para una vista y cambiar su constante cuando sea necesario.
  2. Si está utilizando xib, puede deshabilitar Auto Layout en ese xib específico.

Estoy usando layout automático. y funcionando correctamente Tengo una uiscrollview y contiene 3-4 imágenes. Depende de cuántas imágenes haya. cuando bash hacer una image actual a pantalla completa, estoy usando una function, espero que funcione. Es así:

– (vacío) growImg {

 if (self.growImgNeed) { self.Scroller.frame=CGRectMake(0, 100, 320, 376); CGRect ViewSize = Scroller.bounds; for(int i=0;i< Scroller.subviews.count;i++){ [[self.Scroller.subviews objectAtIndex:i] setSize:CGSizeMake(320, 376)]; [[self.Scroller.subviews objectAtIndex:i] setFrame:ViewSize]; ViewSize = CGRectOffset(ViewSize, Scroller.bounds.size.width, 0); } Scroller.contentSize = CGSizeMake((Scroller.subviews.count) * Scroller.bounds.size.width, Scroller.bounds.size.height); self.growImgNeed=false; } else { self.Scroller.frame=CGRectMake(80, 82, 160, 188); CGRect ViewSize = Scroller.bounds; for(int i=0;i< Scroller.subviews.count;i++){ [[self.Scroller.subviews objectAtIndex:i] setSize:CGSizeMake(160, 188)]; [[self.Scroller.subviews objectAtIndex:i] setFrame:ViewSize]; ViewSize = CGRectOffset(ViewSize, Scroller.bounds.size.width, 0); } Scroller.contentSize = CGSizeMake((Scroller.subviews.count) * Scroller.bounds.size.width, Scroller.bounds.size.height); self.growImgNeed=true; } 

}