3

私は分割ビュー プロジェクトを持っていて、それを横向きモードにしました。iOS SDK を iOS6 にアップグレードする前に問題なく動作します。しかし、アップグレード後、iOS 5.1 シミュレーターを使用して実行すると、常にポートレート モードで表示され、マスター ビューが表示されなくなります。

ここに私のコードがあります:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

    MasterViewController *masterViewController = [[[MasterViewController alloc] initWithNibName:@"MasterViewController" bundle:nil] autorelease];
    UINavigationController *masterNavigationController = [[[UINavigationController alloc] initWithRootViewController:masterViewController] autorelease];

    CustomverDetailViewController *custView = [[[CustomverDetailViewController alloc] initWithNibName:@"CustomverDetailViewController" bundle:nil] autorelease];

    self.splitViewController = [[[UISplitViewController alloc] init] autorelease];
    self.splitViewController.viewControllers = @[masterNavigationController, custView];


    self.window.rootViewController = self.splitViewController;

    [self.window makeKeyAndVisible];
}

何か案は?

私は異なるバージョンに異なるコードを与えようとします.iOS6では問題ないようですが、iOS5.1では、このビューに入るときに向きが変わります.新しい UIWindow を割り当てると、元の向きは縦になります.

ここでコードを変更しました:

self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

left = [[[MasterViewController alloc] initWithNibName:@"MasterViewController" bundle:nil] autorelease];
UINavigationController *masterNavigationController = [[[UINavigationController alloc] initWithRootViewController:left] autorelease];


right = [[CustomverDetailViewController alloc] initWithNibName:@"CustomverDetailViewController" bundle:nil];


self.splitViewController = [[[UISplitViewController alloc] init] autorelease];
self.splitViewController.viewControllers = @[masterNavigationController, right];


if (([[[UIDevice currentDevice] systemVersion] floatValue ] < 6.0 )) {


    self.splitViewController.delegate = left;
    [self.splitViewController.view setFrame:CGRectMake(0, 0, 1024.0f, 768.0f)];

    self.window.rootViewController = self.splitViewController;
     [self.window makeKeyAndVisible];


}else{
    self.window.rootViewController = self.splitViewController;
    [self.window makeKeyAndVisible];
}

[right release];

iOS 6 で iOS 5.1 で

4

1 に答える 1

0

iOS 6 で追加された新しいデリゲート メソッドを追加してみる

- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskLandscape;
}

- (void)shouldAutorotate {
    return NO;
}
于 2012-10-17T09:42:49.720 に答える