xcode animation segue

Presione segue en xcode sin animación



animation (10)

¡La respuesta de Ian funciona genial!

Aquí hay una versión Swift de Segue, si alguien necesita:

PushNoAnimationSegue.swift

import UIKit /// Move to the next screen without an animation. class PushNoAnimationSegue: UIStoryboardSegue { override func perform() { let source = sourceViewController as UIViewController if let navigation = source.navigationController { navigation.pushViewController(destinationViewController as UIViewController, animated: false) } } }

Estoy usando storyboarding y push segues en xcode, pero quiero tener segues que solo aparezcan en la vista siguiente, no deslice la vista siguiente (como cuando usa una barra de pestañas y aparece la siguiente vista).

¿Existe una forma sencilla y agradable de hacer que los segmentos de inserción normales simplemente "aparezcan" y no "se deslicen", sin la necesidad de agregar segmentos personalizados?

Todo está funcionando completamente bien, solo quiero eliminar esa animación de diapositivas entre las vistas.


Ahora he logrado hacer esto usando el siguiente código:

CreditsViewController *creditspage = [self.storyboard instantiateViewControllerWithIdentifier:@"Credits"]; [UIView beginAnimations:@"flipping view" context:nil]; [UIView setAnimationDuration:0.75]; [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.navigationController.view cache:YES]; [self.navigationController pushViewController:creditspage animated:NO]; [UIView commitAnimations];

¡Espero que esto ayude a alguien más!


Aquí está la versión de Swift adaptada para presentar modalmente un ViewController sin animación:

import UIKit /// Present the next screen without an animation. class ModalNoAnimationSegue: UIStoryboardSegue { override func perform() { self.sourceViewController.presentViewController( self.destinationViewController as! UIViewController, animated: false, completion: nil) } }


Estoy usando Visual Studio w / Xamarin, y el diseñador no proporciona la marca de "Animates" en la respuesta de dtochetto.

Tenga en cuenta que el diseñador de XCode aplicará el siguiente atributo al elemento segue en el archivo .storyboard: animates = "NO"

Edité manualmente el archivo .storyboard y agregué animaciones = "NO" a los elementos segue, y funcionó para mí.

Ejemplo:

<segue id="1234" destination="ZB0-vP-ctU" kind="modal" modalTransitionStyle="crossDissolve" animates="NO" identifier="screen1ToScreen2"/>


Para cualquiera que use Xamarin iOS, su clase de segue personalizada debe verse así:

[Register ("PushNoAnimationSegue")] public class PushNoAnimationSegue : UIStoryboardSegue { public PushNoAnimationSegue(IntPtr handle) : base (handle) { } public override void Perform () { SourceViewController.NavigationController.PushViewController (DestinationViewController, false); } }

No olvide que aún necesita establecer una secuencia personalizada en su story board y establecer la clase en la clase PushNoAnimationSegue.


Para mí, la forma más fácil de hacerlo es:

UIView.performWithoutAnimation { self.performSegueWithIdentifier("yourSegueIdentifier", sender: nil) }

Disponible desde iOS 7.0


Pude hacer esto creando un segue personalizado (basado en este enlace ).

  1. Crea una nueva clase segue (mira a continuación).
  2. Abra su Storyboard y seleccione el segue.
  3. Establezca la clase en PushNoAnimationSegue (o lo que sea que haya decidido llamar).

Swift 4

import UIKit /* Move to the next screen without an animation. */ class PushNoAnimationSegue: UIStoryboardSegue { override func perform() { self.source.navigationController?.pushViewController(self.destination, animated: false) } }

C objetivo

PushNoAnimationSegue.h

#import <UIKit/UIKit.h> /* Move to the next screen without an animation. */ @interface PushNoAnimationSegue : UIStoryboardSegue @end

PushNoAnimationSegue.m

#import "PushNoAnimationSegue.h" @implementation PushNoAnimationSegue - (void)perform { [self.sourceViewController.navigationController pushViewController:self.destinationViewController animated:NO]; } @end


Puede desmarcar "Animates" en Interface Builder para iOS 9


Simplemente configure falso animated en UINavigationController.pushViewController en Swift

self.navigationController!.pushViewController(viewController, animated: false)


responder usando Swift3 -

para segue "push":

class PushNoAnimationSegue: UIStoryboardSegue { override func perform() { source.navigationController?.pushViewController(destination, animated: false) } }

para la transición "modal":

class ModalNoAnimationSegue: UIStoryboardSegue { override func perform() { self.source.present(destination, animated: false, completion: nil) } }