Tenho a seguinte transição de CAT para um UIView chamado finalScoreView
, o que o faz entrar na tela a partir do topo:
CATransition *animation = [CATransition animation];
animation.duration = 0.2;
animation.type = kCATransitionPush;
animation.subtype = kCATransitionFromBottom;
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
[gameOver.layer addAnimation:animation forKey:@"changeTextTransition"];
[finalScoreView.layer addAnimation:animation forKey:@"changeTextTransition"];
Como faço para que salte uma vez depois de descer e fique parado? Ele ainda deve entrar na tela pelo topo, mas depois pular quando descer.
Qualquer ajuda seria muito apreciada, obrigado!
Respostas:
Com iOS7 e UIKit Dynamics, não há mais necessidade de usar
CAKeyframeAnimations
ouUIView
animações!Dê uma olhada no aplicativo UIKit Dynamics Catalog da Apple . Como alternativa, Teehanlax tem um tutorial claro e conciso com o projeto completo no github . Se você quiser um tutorial mais detalhado sobre os meandros da dinâmica, o tutorial de Ray Winderlich é ótimo. Como sempre, os documentos da Apple são uma ótima primeira parada, então verifique a referência da classe UIDynamicAnimator nos documentos.
Aqui está um pouco do código do tutorial do Teenhanlax:
e aqui estão os resultados
UIKit Dynamics é uma adição realmente poderosa e fácil de usar para iOS7 e você pode obter uma interface de usuário de excelente aparência a partir dele.
Outros exemplos:
As etapas para implementar a dinâmica do UIKit são sempre as mesmas:
UIDynamicAnimator
e armazene-o em uma propriedade forteUIDynamicBehaviors
. Cada comportamento deve ter um ou mais itens, normalmente uma visualização para animar.UIDynamicBehaviors
é um estado válido naUIDynamicAnimator
simulação.fonte
UIDynamicItemBehavior
(que na verdade são propriedades, não comportamento). Você não pode simplesmente usar diferentes propriedades físicas em diferentes comportamentos. Outro caso é a implementação de limites de borracha do tipo UIScrollView - é muito complicado. Posso escrever ainda mais, mas o comentário é muito curto.UIDynamicAnimator
e objetos associados a ele, mas não responde como usá-losUma alternativa mais simples para
UIDynamicAnimator
no iOS 7 é Spring Animation (uma nova e poderosa animação em bloco UIView), que pode fornecer um bom efeito de salto com amortecimento e velocidade: Objetivo CRápido
Swift 4.0
usingSpringWithDamping
0.0 == muito saltitante. 1.0 faz com que ele desacelere suavemente sem ultrapassar.initialSpringVelocity
é, aproximadamente, "distância desejada, dividida pelos segundos desejados". 1.0 corresponde à distância total da animação percorrida em um segundo. Exemplo, a distância total da animação é 200 pontos e você deseja que o início da animação corresponda a uma velocidade de visualização de 100 pt / s, use um valor de 0,5.Um tutorial mais detalhado e um aplicativo de amostra podem ser encontrados neste tutorial . Espero que isso seja útil para alguém.
fonte
Aqui está um projeto de demonstração que criei para ajudá-lo a obter a animação certa. Aproveitar!
SpringDampingDemo
fonte
fonte