1

ポートレート モードのいくつかのビューを持つアプリがあり、モーダル ビュー コントローラーをランドスケープ モードで表示したい... IOS 5.0 および 5.1 では完全に動作し、IOS 6 では modalView をポートレート モードで開きます。知っておく必要があります: 私はストーリーボードを使用し、その VC をランドスケープに設定します... アプリのデリゲートに次を追加しました:

-(NSUInteger)application:(UIApplication *)application    supportedInterfaceOrientationsForWindow:(UIWindow *)w
{return UIInterfaceOrientationMaskPortrait;}

を追加する| UIInterfaceOrientationMaskLandscapeと、アプリを他のビューで回転させることができます。

次に、要約のために、サポートされているすべてのインターフェイスの向きを無効にしました。ここでは、縦向きと横向きを left に設定しようとしましたが、うまく機能しますが、この場合、すべてのビューを左に回転させて縦向きに戻すことができます。

この後、風景でランチしたい ViewCONtroller で、IOS 6 用に次のメソッドがあります。

-(NSUInteger)supportedInterfaceOrientations
{return UIInterfaceOrientationLandscapeLeft;}

-(BOOL)shouldAutorotate
{return YES;}

ボタンをタップして modalView を起動すると、次のエラーが表示されます

そのメソッドで YES を返すことはわかっていますが、NO を設定しても何も起こりません。私はそれを考慮したいと思います: 私のアプリは IOS 5 以降で動作する必要があります。

誰でも私を助けてくれますか?どんな提案でも大歓迎です;)

どうもありがとう

4

1 に答える 1

3
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self transformView2ToLandscape];}

-(void) transformView2ToLandscape {

NSInteger rotationDirection;
UIDeviceOrientation currentOrientation = [[UIDevice currentDevice] orientation];

if(currentOrientation == UIDeviceOrientationLandscapeLeft){
    rotationDirection = 1;
}else {
    rotationDirection = -1;
}

CGAffineTransform transform = [arController.viewController.view transform];
transform = CGAffineTransformRotate(transform, degreesToRadians(rotationDirection * 90));
[arController.viewController.view setTransform: transform];}

これは私にとってはうまくいきます。

于 2013-01-16T10:42:35.920 に答える