web-dev-qa-db-ja.com

iOS 6でオリエンテーションを処理できませんか?

私は使っている

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

方向タイプに基づいてビューのフレームを変更するように委任します

つまり、

if(UIInterfaceOrientationIsLandscape(interfaceOrientation))
{
    self.view.frame=CGRectMake(0,0,500,300);
}
else
{
    self.view.frame=CGRectMake(0,0,300,400);
}

IOS6でと同じ状況を処理する方法

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

iOS6では非推奨になりました。

次のデリゲートを使用して、すべての方向を設定しています。

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationAllMask;
}

だが、

-(BOOL)shouldAutoRotate
{
    return YES;

}

呼び出されていません。この状況に対処する方法は?

enter image description here

20
Bharath

AppDelegateで、ViewControllerオブジェクトを次のようにウィンドウに追加しました。

[self.window addSubView:viewControllerObj]

問題は上記の行にありました。オリエンテーションはiOS5では上記の行で正しく機能しますが、iOSでは、オリエンテーションが正しく機能するようにするには、上記の行を次のように変更します。

[self.window setRootViewController:viewControllerObj]

次に、向きが変わるとアプリが回転します。

46
Bharath

プロジェクトとターゲットの設定で、各デバイスタイプの向きが許可されていることを確認してください。

また、shouldAutorotateToInterfaceOrientation:にあるコードはviewDidLayoutSubviewsに入れることができます。

3
Leo Natan

IOS 6では、ローテーションの処理は親のビューで注意を払うことを忘れないでください。子のビューコントローラに対する責任が少なくなります。しかし、InterfaceBuilderなしですべてをコーディングすることは私たちにとってもっと厄介です。

1
lagos

オリエンテーションがすべて有効になっていることを確認してください。enter image description here

IOS6ではwillAnimateRotationToInterfaceOrientationを使用します。

0
Andrew

IOS6でのUINavigation方向の問題の処理

1 UINavigation + Rotationカテゴリクラスを作成します

2 UINavigation + Rotation.mクラスのメソッドの下に配置

-(BOOL)shouldAutorotate
{
    return [[self.viewControllers lastObject] shouldAutorotate];
}

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

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    if ([self.viewControllers count] == 0) {
        return UIInterfaceOrientationPortrait;
    }
    return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
}
0
user941967