2012-01-02 405 views
3

在我的应用程序中,我试图让手机旋转到水平方向时,导航栏不会从44px缩小到32px。我已经能够通过设置navigationBars框架,当视图旋转,并在viewDidAppear。但是,当我按主页按钮退出应用程序,然后重新进入应用程序时,导航栏仍然收缩。所以我实现了一个通知来检测UIApplicationDidBecomeActiveNotification,并在该方法中,我将导航栏框高度重置为44px。但是,它不起作用,因为正在调用我的视图框架。有谁知道在UIApplicationDidBecomeActiveNotification被触发后重新调用viewcontrollers框架会调用什么?UIApplicationDidBecomeActiveNotification被触发后会调用什么?

+0

您的视图是由一个笔尖构成的吗? – kocodude 2012-01-02 15:17:12

+0

@kocodude - 不是以编程方式构建的。 – 2012-01-02 15:24:32

回答

0

在您的应用程序中,任何类都可以成为不同通知的“观察者”。当您创建视图控制器时,您可以将其注册为UIApplicationDidBecomeActiveNotification的观察者,并指定在您的应用程序发送该通知时要调用哪种方法。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myMethod:) name: UIApplicationDidBecomeActiveNotification object:nil]; 

在ViewWillDisappear/viewDidDisAppear/dealloc的删除观察者根据自己的需要:

[[NSNotificationCenter defaultCenter] removeObserver:self]; 
+0

是的,我做到了。视图从无效状态恢复后,以某种方式重置其框架,或重新组织它的布局,我想知道究竟发生了什么。 – 2012-01-02 15:54:18

+0

当应用程序变得活跃时,它发布通知,并且我们添加了观察者来捕获该通知,然后我们在其中定义的任务将工作。这很简单。你可以参考下面的开发者链接获取关于通知的一些信息-http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSNotificationCenter_Class/Reference/Reference.html – rishi 2012-01-02 16:00:36

+0

是的,我知道。我在说,除此之外,当应用程序变为活动状态时,还会调用其他内容以重置导航栏框架。 – 2012-01-02 16:01:47

0

我有同样的问题,如果您通过密钥值观察员附加一个观察者可以看到的东西是在UIApplicationDidBecomeActiveNotification之后调用。

相关问题