ユーザーがボタンを押すと、画面の下部から UIView がスライドする UINavigationController があります。
ただし、ビューの「非表示」プロパティを NO に設定した直後に、UINavigationController のビューが、アニメーションが既に終了しているかのように、1 フレームの間完全に表示されることがあります。
ビューを表示/非表示にするコードは次のとおりです。
- (void)showGUI: (bool)show
{
CATransition *transition = [CATransition animation];
transition.duration = 0.5;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
if (!show)
{
transition.type = kCATransitionReveal;
transition.subtype = kCATransitionFromBottom;
}
else
{
transition.type = kCATransitionMoveIn;
transition.subtype = kCATransitionFromTop;
}
[navController.view.superview.layer addAnimation:transition forKey:nil];
navController.view.hidden = !show;
}