このコードで回転するUIViewがあります。
helpView.transform = CGAffineTransformMakeRotation(degreesToRadians( rotationAngle ));
ここで、degreeToRadiansは、度からラジアンに変換するマクロです。
これは、ビューが表示されている限り正常に機能します(例:alpha = 1)。非表示にすると(alpha = 0、アニメーション化)、それ以上回転しなくなります。これは、デバイスが描画時間を「節約」するための賢い方法だと思いますが、アルファが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の場合は回転しません。回転は別の方法で行われます。他のビューも回転するので、そのままにしておきます。