17

iOS6では、shouldAutorotateToInterfaceOrientationは非推奨です。 アプリを自動回転で正しく動作させるために使用しようとしまし supportedInterfaceOrientationsたが、失敗しました。shouldAutorotate

このViewController回転したくないのですが、機能しません。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

-(BOOL)shouldAutorotate
{
    return NO;
}

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}

何か案は?事前に助けてくれてありがとう!

4

2 に答える 2

38

理解した。

1) サブクラス化された UINavigationController (階層の最上位のビューコントローラーが方向を制御します) はそれを self.window.rootViewController として設定しました。

- (BOOL)shouldAutorotate
{
    return self.topViewController.shouldAutorotate;
}
- (NSUInteger)supportedInterfaceOrientations
{
    return self.topViewController.supportedInterfaceOrientations;
}

2)View Controllerを回転させたくない場合

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

-(BOOL)shouldAutorotate
{
    return NO;
}

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}

3) 回転させたい場合

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAllButUpsideDown;
}

-(BOOL)shouldAutorotate
{
    return YES;
}

ところで、あなたのニーズに応じて、別の関連する方法:

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
     return UIInterfaceOrientationMaskPortrait;
}
于 2012-09-30T15:29:10.370 に答える
3

ナビゲーション コントローラーの代わりにタブ バー コントローラーをルート コントローラーとして使用している場合は、同様に UITabBarController をサブクラス化する必要があります。

また、構文も異なります。以下を使用して成功しました。次に、オーバーライドしたいView Controllerで上記の例を使用して成功しました。私の場合、メイン画面が回転しないようにしたかったのですが、映画を含むFAQ画面があり、当然横向きのビューを有効にしたかったのです。完璧に機能しました!self.modalViewController への構文の変更に注意してください (ナビゲーション コントローラーの構文を使用しようとすると、コンパイラの警告が表示されます)。

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (BOOL)shouldAutorotate
{
    return self.modalViewController.shouldAutorotate;
}

- (NSUInteger)supportedInterfaceOrientations
{
    return self.modalViewController.supportedInterfaceOrientations;
}
于 2012-10-03T00:50:13.703 に答える