1

ローテーションを期待どおりに機能させるためにいくつかのアプローチを試みてきましたが、これまでのところいくつかの問題に直面しています。

ここで、2 つの方向ビューを含む 1 つの xib ファイルを含む 1 つのクラスを作成したいと考えています。1 つはポートレート用、もう 1 つはランドスケープ用です。

メインの ViewController (アプリ デリゲートに設定されたルート コントローラー) でこれを試しています。しかし、どういうわけか失敗しています。回転すると、ビューが切り替わりますが、アウトレットは回転しません。たとえば、横向きビューの単純なラベルが表示されます。デバイスが縦向きモードであるかのように。

コードのビットは次のとおりです。

私のアプリデリゲートで

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
    self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil];
} else {
    //self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPad" bundle:nil withOrientation:UIInterfaceOrientationPortrait];
    self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPad" bundle:nil];
}
self.window.rootViewController = self.viewController;

Viewcontroller.m 内

- (void)viewDidLoad
{
[super viewDidLoad];

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:)
                                             name:UIDeviceOrientationDidChangeNotification object:nil];

}


 - (void)orientationChanged:(NSNotification *)notification
   {
    [self performSelector:@selector(updateLandscapeView2) withObject:nil afterDelay:0];
   }



  - (void)updateLandscapeView2
  {
      UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation;
      if (UIDeviceOrientationIsLandscape(deviceOrientation))
    {
    self.view = self.landscapeView;
    [[NSNotificationCenter defaultCenter] postNotificationName:@"landscape" object:nil];
    }
else if (deviceOrientation == UIDeviceOrientationPortrait && isShowingLandscapeView)
{
    self.view = self.portraitView;
    [[NSNotificationCenter defaultCenter] postNotificationName:@"portrait" object:nil];
    }
  }

ローカル通知を使用して、向きの変更を Viewcontroller のサブビューに転送するつもりです。

とにかく、私はここで何が欠けていますか? これが失敗する理由がわかりません。

4

1 に答える 1

0

私が見つけたのは、あなたが電話したとき

[UIDevice currentDevice].orientation

のコンテキスト内で

[viewController performSelector .....]

うまくいきませんでした。

これらの解決策を持っている人はいますか?

于 2012-10-27T21:07:00.660 に答える