1

我有一个使用以下代码旋转的 UIView:

helpView.transform = CGAffineTransformMakeRotation(degreesToRadians( rotationAngle ));

其中 degreeToRadians 只是一个将度数转换为弧度的宏。

只要视图可见,就可以正常工作,例如 alpha = 1。当我隐藏它(alpha = 0,我制作动画)时,它不再旋转。我想这是设备“节省”绘图时间的一种聪明方法,但有什么方法可以强制绘制它,即使 alpha 为 0?否则我将不得不在再次显示之前旋转它。

有什么好主意吗?

谢谢

编辑:这是我用来显示/隐藏视图的代码。

-(void)showHelp
{
    bool helpAlpha = !helpView.alpha;
    CGFloat newScale;

    if (helpView.alpha) {
        newScale = kHelpSmall;
        helpView.transform = CGAffineTransformMakeScale(kHelpBig, kHelpBig);
    } else {
        newScale = kHelpBig;
        helpView.transform = CGAffineTransformMakeScale(kHelpSmall, kHelpSmall);
    }

    [UIView animateWithDuration:(kAnimationTimeShort / 2) animations:^(void) {
        [helpView setAlpha:helpAlpha];
        helpView.transform = CGAffineTransformMakeScale(newScale, newScale);
    }];
}

如您所见,我还缩放它以获得更好的效果。可见时工作完美,当 alpha = 0 时不旋转。旋转是在另一种方法中完成的,我更愿意保留它,因为我还在那里旋转了一些其他视图。

4

1 回答 1

1

每次使用CGAffineTransformMake*. 如果这样做,您将获得旋转变换或缩放变换。我假设缩放的在旋转的之后,因此您无法看到旋转的视图。如果您需要保留这两种效果,则必须使用CGAffineTransformRotate. 所以缩放和旋转将是

helpView.transform = CGAffineTransformMakeScale(kHelpSmall, kHelpSmall);
helpView.transform = CGAffineTransformRotate(helpView.transform, degreesToRadians(rotationAngle));

顺序可能会有所不同。

于 2011-06-01T07:30:09.767 回答