0

ランドスケープモードでアプリを起動できません。ビューは常にポートレートモードで表示されます。

私はplistで以下を設定しています:

<key>UISupportedInterfaceOrientations</key>
<array>
        <string>UIInterfaceOrientationLandscapeLeft</string>
        <string>UIInterfaceOrientationLandscapeRight</string>
</array>

UIViewControllerはAppDelegate.mで作成されます。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.myViewController = [MyViewController alloc];

    UIView *myView = [[UIView alloc] init];
    myView = [UIColor whiteColor];
    self.myViewController.view = myView;

    self.window.rootViewController = self.myViewController;
    self.window makeKeyAndVisible];
    return YES;
}

MyViewController.mにshouldAutorotateToInterfaceOrientationを追加しました

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}

デバイスがポートレートモードでアプリが起動すると、ステータスバーはランドスケープモードになります。ただし、UIViewが表示されると、ポートレートモードになります。デバイスがランドスケープモードの場合も同じことが起こります。

ただし、Interface BuilderでUIViewControllerを作成すると、機能します。

これをAppDelegate.mに追加すると機能しなかったため、これは自動サイズ変更マスキングに関連していますか?

 myView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight ;
4

3 に答える 3

0

コードで構文エラーが見つかりました。myView.backgroundColor = [UIColor whiteColor]; という意味だと思います。しかし、これが唯一の間違いです。コードは正常に動作し、アプリは起動して、myView.autoresizingMask の有無にかかわらずランドスケープ モードのままになります。

私の環境: iOS 6.0 を搭載した xCode 4.5 デバイス iPhone 4S

于 2012-10-12T18:29:49.897 に答える
0

このコードを次のように置き換えますViewController

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return ((interfaceOrientation == UIInterfaceOrientationLandscapeLeft) ||(interfaceOrientation == UIInterfaceOrientationLandscapeRight));
} 
于 2012-10-12T18:16:39.460 に答える
0

これを使用して、起動時の方向を見つけます..正しく動作します:

UIInterfaceOrientation orientation = [UIDevice currentDevice].orientation;
if (! UIDeviceOrientationIsValidInterfaceOrientation(orientation))
    orientation = [UIApplication sharedApplication].statusBarOrientation;

次に、この向きを使用してビューを回転させます

于 2012-10-12T18:21:15.253 に答える