2013-02-12 122 views
3

改变方向的装置是怎么知道方向变化的研究功能是 - (无效)viewWillLayoutSubviews和 - (无效)viewDidLayoutSubviews 但是,他们只是在控制器; 现在我想知道的是有这样的功能,任何知道方向变化的研究在文件AppDelegate.m我怎么能知道的AppDelegate

- (void)navigationController:(UINavigationController *)navigationController 
     willShowViewController:(UIViewController *)viewController 
        animated:(BOOL)animated { 

    UINavigationBar *morenavbar = navigationController.navigationBar; 
    UINavigationItem *morenavitem = morenavbar.topItem; 
    //We don't need Edit button in More screen. 
    morenavitem.rightBarButtonItem = nil; 
    morenavitem.title = nil; 
    UIImage *backgroundImage = [UIImage imageNamed:@"nav.png"]; 

    [morenavbar setBackgroundImage:backgroundImage 
     forBarMetrics:UIBarMetricsDefault]; 

    UIDeviceOrientation currentDeviceOrientation = 
      [[UIDevice currentDevice] orientation]; 
    UIInterfaceOrientation currentInterfaceOrientation = 
      [[UIApplication sharedApplication] statusBarOrientation]; 
    if (UIDeviceOrientationIsLandscape(currentDeviceOrientation)|| 
     UIDeviceOrientationIsLandscape(currentInterfaceOrientation)){ 
     UIImage *backgroundImageLandscape = [UIImage imageNamed:@"navbar_landscape.png"]; 
     [morenavbar setBackgroundImage:backgroundImageLandscape forBarMetrics:UIBarMetricsDefault]; 
    } 

} 

回答

7

当发生旋转时

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(handleDidChangeStatusBarOrientationNotification:) 
              name:UIApplicationDidChangeStatusBarOrientationNotification 
              object:nil]; 

然后实现方法可以注册通知当消息被发送时被调用

- (void)handleDidChangeStatusBarOrientationNotification:(NSNotification *)notification; 
{ 
    // Do something interesting 
    NSLog(@"The orientation is %@", [notification.userInfo objectForKey: UIApplicationStatusBarOrientationUserInfoKey]); 
} 

或者查看UIApplicationDidChangeStatusBarOrientationNotification的文档,它将为您提供在

0

如果你正在谈论的界面的方向,你可以观察UIApplicationDidChangeStatusBarOrientationNotification如果你想要当设备方向改变通知可以观察UIDeviceOrientationDidChangeNotification