我有一个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时不旋转。旋转在另一种方法中完成,我宁愿保留它,因为我还旋转其他视图。
答案 0 :(得分:1)
每次使用CGAffineTransformMake*
时,您都要重置转换。如果这样做,您将获得旋转变换或缩放变换。我假设缩放的一个是在旋转后的一个,因此你无法看到旋转的视图。如果您需要保留两种效果,则必须使用CGAffineTransformRotate
。所以缩放和旋转将是
helpView.transform = CGAffineTransformMakeScale(kHelpSmall, kHelpSmall);
helpView.transform = CGAffineTransformRotate(helpView.transform, degreesToRadians(rotationAngle));
订单可能会有所不同。