with uicollectionviewflowlayoutautomaticsize collection automatic ios uicollectionview autolayout

uicollectionviewflowlayoutautomaticsize - ¿Cambiar la posición del control de autolayout habilitado revertir los cambios?



uicollectionview resize cell (1)

Cuando usa el diseño automático, no debe establecer marcos. Tienes que cambiar las restricciones y dejar que eso cambie los marcos indirectamente.

La Guía de diseño automático de Apple muestra un ejemplo de animación:

[containerView layoutIfNeeded]; // Ensures that all pending layout operations have been completed [UIView animateWithDuration:0.4 animations:^{ // Make all constraint changes here [containerView layoutIfNeeded]; // Forces the layout of the subtree animation block and then captures all of the frame changes }];

No muestra cómo configura sus restricciones, por lo que no puedo mostrarle cómo modificarlas para mover la barra de búsqueda y la vista de colección. Idealmente, solo necesita establecer la propiedad constant de una de las restricciones. (Sus restricciones deben configurarse de modo que mover una cosa haga que la otra se ajuste automáticamente).

Una parte de mi aplicación muestra una lista en UIcollectionView. Si el usuario desliza hacia abajo la pantalla, presentaré UISearchBar con animación desde la parte superior del viewController. Los hice todos en un viewController por separado.

Yo uso el autolayout para posicionar los controles en ese ViewController.

Muevo la barra de búsqueda de y = -88 a y = 0 y muevo el collectionView hacia abajo para dejar espacio para searchBar con animación cuando el usuario desliza hacia abajo la pantalla, mi problema es que si hago call para reloadData a collectionView, ambas barras de búsqueda y CollectionView se mueven a sus posiciones anteriores autolacionadas

Yo uso debajo la animación para moverlos

[UIView animateWithDuration:0.4 animations:^(void){ fileSearchBar.frame=fileSearchBar.frame=CGRectOffset(fileSearchBar.frame, 0,88); chartsCollectionView.frame=gridFrame;///gridFrame is calculated to move down }];

Hay una forma de evitar que se muevan a su posición precalculada