Posso aumentar a velocidade da animação de presentModalViewController?
-
20-08-2019 - |
Pergunta
Eu estou escrevendo um aplicativo de desenho que mostra uma ferramentas View Controller quando o usuário clica em um item em uma barra de ferramentas. No entanto, vários dos meus beta testers têm relatado que o paladar ferramentas abre muito lentamente. Eu estou usando o presentModalViewController padrão: animado: chamada para exibir as ferramentas, e eu tentei envolvê-lo em um bloco de código como este para acelerá-lo:
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration: 0.1];
[self presentModalViewController:settings animated:YES];
[UIView commitAnimations];
Infelizmente, isso não funciona. Se você disser animado: NÃO funciona melhor, mas a visualização de tela de desenho subjacente é removido imediatamente (desde o controlador pensa que já não é visível), e assim a animação ocorre sobre um fundo branco
.Alguém já fez isso antes que estaria disposto a oferecer alguns conselhos? Eu aprecio isso!
Solução
A pergunta semelhante é pedido aqui .
Você também pode alterar a velocidade usando esta técnica, mas na minha experiência, ele faz isso sobre um fundo branco, como você sugeriu.
Outras dicas
Editado:. Adicionou uma outra opção com contenção controlador para iOS 5 e posterior
Outra solução é definir o espaço de tempo da camada.
Isto é feito através do estabelecimento de velocidade de CALayer. Para retardar o baixo animação, pode-se usar:
MytransparentVCViewController *vc = [[MytransparentVCViewController alloc] initWithNibName:@"MytransparentVCViewController" bundle:nil];
// Makes all animations 10 times slower
// To speed it up, set it to multiples of 1: 2 is 2 times faster, 3 is 3 times faster etc
vc.view.layer.speed = 0.1;
[self presentModalViewController:vc animated:YES];
Note que a solução proposta no post ligado não vai funcionar se o seu objetivo é mudar a velocidade da animação do controlador de vista modal você está prestes a presente (por exemplo, se você usar UIModalTransitionStyleCoverVertical).
A velocidade da camada não é um valor absoluto, mas uma função do espaço de tempo pai que camada (a menos que a camada está na raiz da hierarquia de camadas é claro). Por exemplo, quando você define a velocidade de uma camada a 2, suas animações será executado duas vezes mais rápido em comparação com animações que do pai camada.
Outra opção é usar vista controlador de contenção. (IOS 5 e posterior)
Você tem total controle sobre a animação com transitionFromViewController de UIViewController: toViewController: Duração: opções: animações: conclusão:.