3

デバイスが方向の変更を認識する方法は、-(void)viewWillLayoutSubviews と -(void)viewDidLayoutSubviews ですが、これらは単にコントローラー内にあります。AppDelegate.mファイルの向きの変化を知るために、これらのような関数があるかどうか知りたい

- (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];
    }

}
4

2 に答える 2

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のドキュメントを確認してください。

于 2013-02-12T16:20:14.190 に答える
0

インターフェイスの向きについて話しているUIApplicationDidChangeStatusBarOrientationNotification場合は、デバイスの向きが変更されたときに通知を受け取ることができます。UIDeviceOrientationDidChangeNotification

于 2013-02-12T16:20:16.887 に答える