Existe alguma maneira de ter um efeito de transição / animação ao substituir um controlador de exibição existente como rootviewcontroller por um novo no appDelegate?
objective-c
ios
xcode
cocoa-touch
Jefferson
fonte
fonte
newViewController.view.layoutIfNeeded()
antes do bloco de animação corrige problemas com elementos carregados lentamente.Eu encontrei isso e funciona perfeitamente:
no seu appDelegate:
no seu aplicativo
créditos:
fonte
Estou postando a resposta de Jesus implementada rapidamente. Ele pega o identificador do viewcontroller como argumento, carrega do storyboard selectedViewController e altera o rootViewController com animação.
Atualização do Swift 3.0:
Atualização Swift 2.2:
Depois, você tem um uso muito simples de qualquer lugar:
Atualização do Swift 3.0
fonte
Swift 2
Swift 3, 4, 5
fonte
apenas tente isso. Funciona bem para mim.
EDITAR:
Este é melhor.
fonte
UIViewAnimationOptionAllowAnimatedContent|UIViewAnimationOptionLayoutSubviews
, ou use a primeira versão ou outro método.Para não ter problemas com a transição de transição mais tarde, no aplicativo, é bom limpar a exibição antiga da pilha também
fonte
A resposta correta é que você não precisa substituí-lo
rootViewController
na sua janela. Em vez disso, crie um personalizadoUIViewController
, atribua-o uma vez e deixe-o exibir um controlador filho por vez e substitua-o por animação, se necessário. Você pode usar o seguinte trecho de código como ponto de partida:Swift 3.0
E a maneira como você o usa é:
O exemplo acima demonstra que você pode aninhar
UINavigationController
dentroFrameViewController
e que funciona muito bem. Essa abordagem oferece alto nível de personalização e controle. Basta ligar aFrameViewController.display(_)
qualquer momento para substituir o controlador raiz na sua janela, e ele fará esse trabalho por você.fonte
Esta é uma atualização para o swift 3, esse método deve estar no delegado do aplicativo e você pode chamá-lo de qualquer controlador de exibição, por meio de uma instância compartilhada do delegado do aplicativo
A parte que está faltando nas várias perguntas acima é
Espero que isso ajude alguém.
fonte
em AppDelegate.h:
no seu controlador:
fonte
Proponho o meu caminho, que está funcionando bem no meu projeto, e me oferece boas animações. Testei outras propostas encontradas neste post, mas algumas delas não funcionam conforme o esperado.
fonte
Boa animação doce (testada com Swift 4.x):
Ligue com
fonte