UIView
アニメーションで何か奇妙なことに遭遇しました。アニメーションは、長方形からサブビューを拡大縮小して、その親ビューを塗りつぶします。
//update views
CGRect startRect = ...; //A rect in parentView co-ordinates space that childView appears from
UIView *parentView = ...;
UIView *childView = ...;
[parentView addSubview:childView];
//animation start state
childView.alpha = 0;
childView.center = (CGPointMake( CGRectGetMidX(startRect), CGRectGetMidY(startRect)));
//TODO: set childViews transform and so that it is completely contained with in startRect
childView.transform = CGAffineTransformMakeScale(.25, .25);
[UIView animateWithDuration:.25 animations:^{
childView.transform = CGAffineTransformIdentity;
childView.alpha = 1;
childView.frame = parentView.bounds;
}];
上記のコードは期待どおりに機能します。ただし、アニメーションブロックを次のように並べ替えると、アニメーションは途方に暮れます(スケールが大きくなり、中心点が画面外になります)。
[UIView animateWithDuration:.25 animations:^{
childView.frame = parentView.bounds; //This line was after .alpha
childView.transform = CGAffineTransformIdentity;
childView.alpha = 1;
}];
何が起きてる?プロパティが設定される順序がアニメーションにとって重要なのはなぜですか?