0

一部のビューにUITabBar埋め込まれたアプリケーションがあります。ある特定のナビゲーションビューでグラフ/チャートを表示しているので、iPhoneを左または右に回転させたかのようUINavigationに表示したほうがよいでしょう。landscapeアプリの残りの部分は、ポートレートに適しています。そのため、ユーザーがデバイスを物理的にどのように回転させたかに関係なく、グラフを含むビューを横向きにロードするように「強制」したいと思います。私はもう試した:

#pragma mark - Rotation
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}

しかし、これはビューに何の影響も与えていないようです。ターゲットの「サポートされているインターフェースの向き」で「LandscapeLeft」アイコンを選択すると、デバイスの回転時にアプリ全体の向きを変えることができます。アプリが実際のデバイスの向きを無視するように、すべての通常のビューに対してアプリを縦向きにロックし、グラフを含むビューに対して横向きにロックする方法はありますか?

4

3 に答える 3

1

あなたが正しいです。タブバーアプリケーションでは、shouldAutorotateToInterfaceOrientation呼び出される個々のビューコントローラの:メソッドではありません。shouldAutorotateToInterfaceOrientationビューを方向付けることができるかどうか、およびどのように方向付けることができるかを決定するために、タブバーコントローラーのみが呼び出されます。

ただし、shouldAutorotateToInterfaceOrientationとにかく、個々のViewControllerはそれに応じて実装する必要があります。これらのメソッドは、ViewControllerを押したり引いたりするときにアニメーション効果の方向を決定するために引き続き使用されます。

私は自分で次のことを試したことはありません。タブバーコントローラーをサブクラス化して、shouldAutorotateToInterfaceOrientation現在ユーザーに表示されているビューに応じてそれに応じて応答することができます。しかし、Appleには、タブバーアプリ内のすべてのビューで同じ向きをサポートするように強制する正当な理由があるのではないかと心配しています。

于 2012-11-05T09:29:11.710 に答える
0

ViewController特にランドスケープモードで要求する必要がある場合は、それを試してください。

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

    return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight );

}
于 2012-11-05T09:32:46.130 に答える
0

まず、iOS6SDKを使用しています。

カスタムTabBarコントローラーを使用しています。以下の一連のコードによって、そのTabBarコントローラーの方向を制御します。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // You do not need this method if you are not supporting earlier iOS Versions
    return [self.selectedViewController shouldAutorotateToInterfaceOrientation:interfaceOrientation];
}

- (NSUInteger)supportedInterfaceOrientations
{
    return [self.selectedViewController supportedInterfaceOrientations];
}

- (BOOL)shouldAutorotate
{
    return YES;
}

そして、ViewControllerには次のものが含まれている必要があります

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation {
    return UIInterfaceOrientationIsLandscape(orientation);
}

これは私が行ったことであり、ビューを横向きまたは縦向きにロックすることができました(私の場合)。強制的には、ユーザーにデバイスを横向きにしてグラフを表示するように指示するアラートビューを配置できます。ただの提案。

于 2012-11-05T09:51:05.070 に答える