我最近偶然发现了一个问题,我有一个可以由用户旋转的视图。然而,在旋转期间,它应该大 10%(按比例放大)。
我希望缩放动画但旋转立即可见,因为我在手势识别器的回调中设置它没有动画。
问题:是否可以在不拦截动画比例的情况下更新CGAffineTransform
的旋转,或者没有办法创建一个被缩放的环绕视图?
我最近偶然发现了一个问题,我有一个可以由用户旋转的视图。然而,在旋转期间,它应该大 10%(按比例放大)。
我希望缩放动画但旋转立即可见,因为我在手势识别器的回调中设置它没有动画。
问题:是否可以在不拦截动画比例的情况下更新CGAffineTransform
的旋转,或者没有办法创建一个被缩放的环绕视图?
编辑:
我认为缩放的包装视图将是最不容易出错的方式。
如果您非常想避免这种情况,您可以尝试使用 NSTimer 手动创建缩放动画。也许如果您先查询当前的变换值,然后修改它而不是用独立创建的变换值替换它(用于旋转和缩放),它可以工作。
我认为隐式 UIView 动画会在开始时计算所有后续值,因此会打乱您的旋转。
另一种方法是在缩放发生时锁定旋转。缺点是缩放和旋转不会同时进行。无论如何,您可以创建一个 iVar 或属性,让我们说rotationLocked
和做某事。像这样:
- (void)handlePan:(UIPanGestureRecognizer *)gr
{
if (gr.state == UIGestureRecognizerStateBegan)
{
self.rotationLocked = YES;
[UIView animateWithDuration:.2 animations:^{
[self scaleView];
}completion:^{ self.rotationLocked = NO; };
}
if (gr.state == UIGestureRecognizerStateChanged)
{
if (!self.rotationLocked){
// do the rotation
}
if (gr.state == UIGestureRecognizerStateEnded)
{
// do something else
}