Pergunta

Eu me pergunto como posso ter animações contínuas e repetidas em minhas visualizações sem congelar o resto do meu aplicativo - já que minhas abordagens atuais levam a 100% de animação, 0% de interação do usuário possível - o que é meio ... ruim.

a animação em geral é simples: eu quero fazer um uilabel agir como uma sirene, alterando a propriedade alfa de 1 para 0 e vice-versa.

o bloco básico de animação, portanto, é:

    [UIView animateWithDuration:0.4f
                          delay:0.0f
                        options:UIViewAnimationOptionRepeat | UIViewAnimationOptionAutoreverse | UIViewAnimationOptionBeginFromCurrentState
                     animations:^(void){warningMessage.alpha = 0;}
                     completion:NULL];    

Tentei chamá-lo em background, em backgroundthreads, mesmo em um bloco GCD assíncrono, cada vez que perco o controle do aplicativo - mas a animação funciona bem. (ok, os documentos da apple dizem que DEVE acontecer no tópico principal, mas eu tentei ..)

Agora, novamente, a questão: como ter os dois?é mesmo possível dessa forma?

Desde já, obrigado!

P.S .: Sry <✓if esta é uma repostagem e tanto, não encontrei uma solução / questão adequada aqui!

P.P.S: sim, eu sei que as sirenes não alteram sua propriedade alfa: P

Foi útil?

Solução

você tentou adicionar UIViewAnimationOptionAllowUserInteraction ao sinalizador de opções?

Outras dicas

Bem .. fazer animações com o uikit com certeza é fácil .. mas eu não diria que é muito eficiente.Você apenas anima o alfa, mas há muito mais coisas acontecendo em segundo plano.:)

As animações já rodam em um tópico diferente .. então, iniciá-las em outro tópico não ajudará você.

Como solução, eu registraria um CADisplayLink em seu aplicativo e mudaria o alfa da visualização em sua função de atualização ... que será muito mais eficiente se você executá-lo o tempo todo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top