ios autolayout transition subviews

ios - Efecto de "Movimiento mágico" Transición personalizada



autolayout transition (1)

Mira este repositorio, creo que esto es lo que estás buscando BCMagicTransition: https://github.com/boycechang/BCMagicTransition

El problema con su código es que no está convirtiendo los marcos de sus subvistas de su celda de vista de colección que desea animar a las coordenadas del controlador de vista de contenedor de la transición, y lo mismo con los marcos finales para sus posiciones. Aunque está utilizando AutoLayout, puede manipular las vistas con sus marcos.

Para lograr esto, consulte este método ( documentación ):

func convertRect(rect: CGRect, fromView view: UIView?) -> CGRect

También debe considerar la animación de instantáneas de las vistas que desea animar. A continuación, solo agregue las instantáneas a la vista de contenedor y anímelas a los fotogramas finales convertidos, luego quítelos cuando la animación esté completa.

Espero que esto ayude !

Estoy tratando de obtener una transición personalizada entre dos Controladores de Vista. Primero, aquí hay una imagen para ilustrar lo que quiero:

Quiero que UICollectionViewCell se expanda a toda la pantalla. En esta celda, las subvistas se colocan con Autolayout en IB.

Solo quiero que cada subvista vaya a la nueva posición. Así que probé subview.frame = newSubview.frame en el bloque de animación, pero no funciona (debido a Autolayout, creo).

Pensé eliminar las restricciones mientras ocurría la animación, pero no funciona.

También intenté hacer @IBOutlets de las restricciones y cambiar la propiedad constante.

Aquí está mi código:

let detailView = detailViewController.view let cellView = self.selectedCell container.addSubview(cellView!) let duration = self.transitionDuration(transitionContext) UIView.animateWithDuration(duration, delay: 0.0, options: .CurveEaseInOut, animations: { let newFrame = detailViewController.view.frame cellView!.frame = newFrame cellView!.imageView.frame = newFrame cellView!.labelTopConstraint.constant = 27 cellView!.labelRightConstraint.constant = 8 cellView!.layoutIfNeeded() } ...

De hecho, cuando comienza la animación, las etiquetas se ajustan a una posición, luego se mueven y al final no están en la posición correcta ...

Algunas ideas ? Gracias