0

UIViewController更新:1つ(vc1)をコンテナUIViewControllerとして、もう1つを子vc2( )として使用することは可能ですか?

[vs1 addChildViewController:vc2];
[vs1.view addSubview:vc2.view];

サポートされている方向とはvc2独立して方向を変更できますか?vc1

Fevc1は縦向きのみをvc2サポートしますが、すべての向きをサポートします。vc2ビューを横向きに回転させvc1ながら、ビューを縦向きのままにしたい。

Fe私はVC1とVC2(ポップアップ)を持っています

ポートレート

VC1では縦向きのみがサポートされていますが、VC2はすべての向きをサポートしています。

ここに画像の説明を入力してください

ポップアップの横向きにしたい

ここに画像の説明を入力してください

4

2 に答える 2

0

申し訳ありませんが、あなたが望むことは標準的な動作では不可能です。childViewController が特定の方向をサポートする場合、その親と現在の階層内の他のすべての ViewController もその方向をサポートする必要があります。

あなたがすべきことは、parentViewController を登録してデバイスの回転通知を受信することです。次に、それらに基づいて、childViewController のビューを変換できます。したがって、基本的にアプリは常に縦向きモードのままですが、childViewController のビューは横向きに見えるように変換されます。

次のようにデバイスの向きの通知に登録します

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

その後、このように処理します

// This method gets called everytime the device (!), not the viewController rotates
-(void)deviceDidRotate: (NSNotification*) notification
{
    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];

    // Animate the transform here based on the orientation
}

UIDeviceOrientation と UIInterfaceOrientation が逆になっていることに注意してください。UIDeviceOrientationLandscapeLeft = UIInterfaceOrientationLandscapeRight. デバイスが左に回転したため、ユーザー インターフェイスは右に回転する必要があります。

于 2012-12-10T22:13:11.373 に答える
0

向きは、親ビュー コントローラーによって検出されます。私が使用したアプローチは、親ビューコントローラーで、現在アクティブなビューであるビューを検出し、それに基づいて方向付けを行います。

于 2012-12-10T15:52:48.600 に答える