0

前回作成したiOSアプリを実行したときは、デプロイメントターゲット5.0と関連するSDKでオンになっている必要があります(4.3という早い段階であった可能性があります)。デプロイメントは6.1になりました。私のアプリはランドスケープでのみ実行され、ランドスケープで正常に動作しました。しかし、iPadとiOS SDKを更新して、このアプリを約1年ぶりに実行した後、何かが変わったようです。

ボタンは、iPadがポートレートモードであるかのように表示されます。これは間違っています。横向きになっているはずだからです(以前は問題なく動作していました)。

最新のアップデートで何が変更されましたか?

Xcodeでサポートされているインターフェイスの向きでは、[Landscape Right]のみが選択されており、[Info]セクションでは、[Landscape(右のホームボタン)]という1つの項目だけで[Supportedinterfaceorientations]があります。

アプリを最初に開いたときに開くメインビューコントロールには、

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    return (interfaceOrientation == UIInterfaceOrientationLandscapeRight ||
            interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}

また、の最初の行viewDidLoad

self.view.frame = CGRectMake(0, 0, 1024, 768);

では、なぜコード描画ボタンがポートレートモードであるかのようになっているのでしょうか。


アップデート

shouldAutorotateToInterfaceOrientationメソッドを次のように置き換えようとしました

- (NSUInteger)supportedInterfaceOrientations{
    return UIInterfaceOrientationLandscapeRight & UIInterfaceOrientationLandscapeLeft;
}

しかし、それでも機能しません。

4

2 に答える 2

0

shouldAutorotateToInterfaceOrientationiOS6では非推奨です。 supportedInterfaceOrientationsのメソッドをオーバーライドする必要がありますUIViewController

ドキュメントからの引用があります:

iOS 6では、アプリはアプリのInfo.plistファイルで定義されたインターフェースの向きをサポートします。ビューコントローラは、supportedInterfaceOrientationsメソッドをオーバーライドして、サポートされている方向のリストを制限できます。通常、システムはこのメソッドをウィンドウのルートビューコントローラーまたは画面全体に表示されるビューコントローラーでのみ呼び出します。子ViewControllerは、親View Controllerによって提供されたウィンドウの一部を使用し、サポートされている回転に関する決定に直接関与しなくなりました。アプリの方向マスクとビューコントローラーの方向マスクの交点を使用して、ビューコントローラーを回転できる方向を決定します。

特定の方向で全画面表示されることを目的としたViewControllerのpreferredInterfaceOrientationForPresentationをオーバーライドできます。

于 2013-02-15T20:50:35.227 に答える
0

iOS6.0での向きの変更

次のメソッドを実装する必要があります

-(BOOL)shouldAutorotate
{
  return YES;
}

-(NSUInteger)supportedInterfaceOrientations
{
   return UIInterfaceOrientationMaskLandscape;
}

// Set the initial preferred orientation
-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
   return   UIInterfaceOrientationLandscapeRight;
}


使用している場合は、TabBarController/NavigationControllerこれらのView Controllerをサブクラス化して、独自のViewControllerメソッドを呼び出すようにorientationメソッドをオーバーライドする必要があります。これはiOS6での重要な変更です。

 #import "UINavigationController+Orientation.h"

@implementation UINavigationController (Orientation)

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

-(BOOL)shouldAutorotate
 {
   return YES;
 }

 @end
于 2013-02-16T10:04:30.077 に答える