Como posso acionar o Core Animation em um proxy animador durante uma chamada para resizeSubviewsWithOldSize?

StackOverflow https://stackoverflow.com/questions/114970

  •  02-07-2019
  •  | 
  •  

Pergunta

Tenho alguns NSViews que estou colocando em um dos dois layouts dependendo do tamanho da minha janela.

Estou ajustando o layout quando a supervisão relevante recebe o método resizeSubviewsWithOldSize.

Isso funciona, mas gostaria de animar a mudança.Então, naturalmente, tentei chamar o proxy do animador ao definir os novos quadros, mas a animação não será executada enquanto o usuário ainda estiver arrastando.Se eu soltar o mouse antes da programação da animação, posso ver o final da animação, mas nada até então.Tentei garantir que kCATransactionDisableActions estivesse definido como NÃO, mas isso não ajudou.

É possível iniciar uma nova animação e executá-la durante o redimensionamento?

Foi útil?

Solução

Eu não acho que você possa fazer isso facilmente, porque as animações da CA são executadas por meio de um cronômetro e o temporizador não dispara durante os modos Runloop que estão ativos enquanto o usuário está arrastando.

Se você pode controlar o Runloop enquanto o usuário está arrastando, brinque com os modos Runloop. Isso vai fazer funcionar. Eu não acho que você possa mudar isso no lado da CA.

Outras dicas

Isso realmente não é uma resposta, mas desaconselho animar qualquer coisa enquanto arrasta para redimensionar uma janela.A tela já está sendo animada (a partir da janela em movimento) - outras animações provavelmente serão visualmente confusas e estranhas.

Os efeitos CoreAnimation são melhor usados ​​para passar de um estado conhecido para outro - por exemplo, quando uma janela de preferências é redimensionada para acompanhar o conteúdo de um novo painel e você conhece os tamanhos antigo e novo, ou quando está aumentando ou diminuindo gradualmente um objeto (ou ambos).Fazer animação enquanto a janela está sendo redimensionada será visualmente confuso e tornará mais difícil para o usuário se concentrar em obter o tamanho da janela onde deseja.

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