我希望在用动画缩放之前旋转我的UIView子类的实例。不幸的是,我在相同的动画中旋转和缩放代码。 如何在任何缩放动画发生之前完成或强制旋转?
- (void) layoutSubviews {
self.transform = CGAffineTransformMakeRotation(myAngle);
// other layout...
}
- (void) showMyView {
[UIView setAnimationCurve:something];
[UIView setAnimationDuration:somethingElse];
self.layer.transform = CATransform3DMakeScale(x, y, z);
[UIView commitAnimations];
}
答案 0 :(得分:3)
首先,apple推荐使用Block语法来表示动画内容 除此之外,它还可以更轻松地实现您的目标。
首先制作旋转动画,如果完成则制作缩放内容 代码示例:
[UIView animateWithDuration:0.5
animations:^{
// This rotates the layer by 90°
self.layer.transform = CGAffineTransformMakeRotation(M_PI/2.0);
}
// On completition start the scaling
completion:^(BOOL finished){
if (finished) {
[UIView animateWithDuration:0.5
animations:^{
// This scales
self.layer.transform = CGAffineTransformMakeScale(2.0, 2.0);
}
];
}
}
];
您可以使用“旧”动画样式,但实现动画委托等更复杂......