使用alpha = 0旋转UIView

时间:2011-06-01 07:03:11

标签: iphone xcode uiview alpha cgaffinetransform

我有一个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时不旋转。旋转在另一种方法中完成,我宁愿保留它,因为我还旋转其他视图。

1 个答案:

答案 0 :(得分:1)

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

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

订单可能会有所不同。