/ / Animando UIView e suas subcamadas - iphone, animação, uiview, calayer

Animando o UIView e suas subcamadas - iphone, animação, uiview, calayer

Eu tenho uma subclasse UIView que é composto de várias camadas (principalmente CAShapeLayers com alguns CATextLayers) O problema que tenho é que se eu animar o redimensionamento do UIView usando um bloco de animação (beginAnimations, commitAnimations) e retransmitir as subcamadas no sobrescrito layoutSubviews, então as camadas não são animadas com o UIView.

Abaixo está meu código para animar o quadro do UIView:

miniView.backgroundColor = [UIColor orangeColor];

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0f];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationRepeatCount:MAXFLOAT];
[UIView setAnimationRepeatAutoreverses:YES];

miniView.frame = newFrame;

[UIView commitAnimations];

Então, o problema é que a vista é adequadaanimadas, mas as subcamadas não. Eu posso ver a visualização crescendo e diminuindo, mas as subcamadas aumentam imediatamente e então permanecem com o novo tamanho maior. Qual é a melhor maneira de redimensionar as subcamadas de uma visualização quando ela é redimensionada? E como faço para torná-los animados da mesma forma com a visualização pai?

Respostas:

1 para resposta № 1

Eu precisaria ver mais código para realmente corrigir o problema, no entanto, você pode tentar animar a camada do miniView em vez de sua visualização.

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
animation.fromValue = [NSNumber numberWithFloat:0.0];
animation.toValue = [NSNumber numberWithFloat:1.0];
// additional setup...

[miniView.layer layoutIfNeeded];
[miniView.layer addAnimation:animation forKey:@"whateverYouWant"];

Em vez de usar animação UIKit, isso deve ser mais flexível, uma vez que você pegue o jeito.