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 ).
- Crea una nueva clase segue (mira a continuación).
- Abra su Storyboard y seleccione el segue.
- 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
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)
}
}