0

我最近偶然发现了一个问题,我有一个可以由用户旋转的视图。然而,在旋转期间,它应该大 10%(按比例放大)。

我希望缩放动画但旋转立即可见,因为我在手势识别器的回调中设置它没有动画。

问题:是否可以在不拦截动画比例的情况下更新CGAffineTransform的旋转,或者没有办法创建一个被缩放的环绕视图?

4

1 回答 1

1

编辑:

我认为缩放的包装视图将是最不容易出错的方式。

如果您非常想避免这种情况,您可以尝试使用 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
    }
于 2012-10-28T13:53:13.413 回答