2011-07-05 11 views
2

私はUIViewサブクラスを持っています。私は首尾よくUIViewアニメーションを使用できます。uiview CGAffineTransformは後ろにアニメーションを返します

このUIViewにはサブビューがあり、UIViewもアニメーションできます。

しかし、私はアニメーションを作成して親ビューに適用するとうまくいきますが、アニメーションを子ビューに適用すると逆向きにアニメーション化されるようです。例えば

、私は2倍(幅と高さを倍増させる)ことで、私のUIView親(自己を)スケール場合:

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDelegate: self]; 
[UIView setAnimationDuration:2]; 
[UIView setAnimationDelay:2]; 

CGAffineTransform scaleTransform = CGAffineTransformScale(self.transform, 2, 2 ); 
self.transform = scaleTransform; 
[UIView commitAnimations]; 

、これは正常に動作します。

しかし、私は子供に同じことを行う場合:

UIView *myObj = [[self subviews] objectAtIndex:0]; 

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDelegate: self]; 
[UIView setAnimationDuration:2]; 
[UIView setAnimationDelay:2]; 

CGAffineTransform scaleTransform = CGAffineTransformScale(myObj.transform, 2, 2 ); 
myObj.transform = scaleTransform; 
[UIView commitAnimations]; 

それは動作しません。視覚的に何が起こるかは、子ビューが直ちに縮小され、その後に遅延が元のサイズにまでスケールアップした後です。

変換パラメータを記録すると、親と子の両方で同じように見えますが、私はCGAffineTransformIdentityを設定しようとしました。

何が問題なのでしょうか?

+0

btw、回転が正常に動作しています。スケーリングに問題があります。 – ader

答えて

0

私はlayoutSubviewsをオーバーライドしていました。そこでは、競合するデバイスの向きに基づいてビューのサイズ/位置を割り当てていました。

関連する問題