Pregunta

Estoy intentando disolverse entre dos controladores de visualización con un Segundo personalizado, el Segue inicia correctamente y realiza la animación como se prevé, sin embargo, cuando está en modo horizontal, aparece el controlador de vista de destino en su diseño de retrato durante la duración de la animación.Una vez que la animación completa el controlador de vista de destino "Snaps" a su diseño de paisaje.Ambos de los controladores de vista se configuran utilizando el diseño automático.

A continuación se muestra el método "Realizar" de My Custom Segue:

- (void)perform
{
  UIViewController *srcController = self.sourceViewController;
  UIViewController *dstController = self.destinationViewController;
  dstController.view.transform = srcController.view.transform;

  [UIView transitionFromView:srcController.view 
                      toView:dstController.view 
                    duration:self.animationDuration 
                     options:self.animationOptions 
                  completion:self.animationCompletionBlock];
}

¿Es necesario decirle manualmente el controlador de vista de destino para activar AUTOLAYOUT antes de que se muestre?Y si es así, ¿cómo se realizaría esto?El uso de la división incorporada con una disolución cruzada no parece encontrar este problema, he intentado (sin éxito) para determinar lo que está haciendo que mi encargado de la personalidad no está.

Esto me ha estado perplejo por un tiempo, cualquier ayuda se apreciaría y avisarme si se necesitan más detalles.

¿Fue útil?

Solución

Por lo tanto, resulta que la solución a este problema fue más sencilla de lo que hubiera imaginado.Agregar la siguiente línea garantiza que el controlador de vista de destino tiene los límites correctos cuando establece sus elementos:

dstController.view.bounds = srcController.view.bounds;

Entonces, el resto del código se convierte en:

- (void)perform
{
  UIViewController *srcController = self.sourceViewController;
  UIViewController *dstController = self.destinationViewController;
  dstController.view.transform = srcController.view.transform;
  dstController.view.bounds = srcController.view.bounds;

  [UIView transitionFromView:srcController.view 
                      toView:dstController.view 
                    duration:self.animationDuration 
                     options:self.animationOptions 
                  completion:self.animationCompletionBlock];
}

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top