Ios 将新视图控制器推送到堆栈上时的状态栏动画

Ios 将新视图控制器推送到堆栈上时的状态栏动画,ios,Ios,我有两个视图控制器,它们由导航控制器推动。当第一个视图控制器处于活动状态时,计时器用于通过动画隐藏状态栏(计时器通过调用[[UIApplication sharedApplication]setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade]调用一种方法,在内部隐藏状态栏)。 当用户点击视图时,第二个视图控制器被推到堆栈上。第二个视图控制器需要状态栏可见,以便正确显示导航栏。有时会发生的情况是,当第二个视图控制器被按下时,状态

我有两个视图控制器,它们由导航控制器推动。当第一个视图控制器处于活动状态时,计时器用于通过动画隐藏状态栏(计时器通过调用
[[UIApplication sharedApplication]setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade]
调用一种方法,在内部隐藏状态栏)。
当用户点击视图时,第二个视图控制器被推到堆栈上。第二个视图控制器需要状态栏可见,以便正确显示导航栏。有时会发生的情况是,当第二个视图控制器被按下时,状态栏仍处于动画状态,最后我看到一个位于屏幕之外的导航栏(基本上,第二个视图控制器的视图不显示导航栏)。我想知道是否有方法在按下前停止状态栏动画,或者是否有标准方法解决此问题。

您可以保留计时器的参考:

myTimer *timer = [NSTimer scheduledTimer...];
如果希望状态栏动画不发生,则使其无效:

[myTimer invalidate];
myTimer = nil;

谢谢,我不认为是计时器出了问题。事实上,我已经按照您在第一个视图控制器的视图中的建议做了。问题是,要隐藏状态栏,我正在使用-
(void)setStatusBarHidden:(BOOL)hidden with animation:(UIStatusBarAnimation)动画
如果在第二个视图控制器位于堆栈顶部时动画尚未完成,我会看到我所描述的问题。您应该发布用于设置状态栏动画的代码。