0

iOS6デバイスのxcode4.5とmountainlionmacを使用しています。そして私のアプリではポートレートモード(3画面)で開始しています。ただし、4番目の画面は横向きで、横向き左と横向き右をサポートする必要があります。

説明のほとんどは、回転する方法が示されています。

appddelegateで使用しています

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
      UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:self.viewController];
navigationController.navigationBar.tintColor = [UIColor blackColor];


// Set RootViewController to window
if ( [[UIDevice currentDevice].systemVersion floatValue] < 6.0)
{
    // warning: addSubView doesn't work on iOS6
     [self.window addSubview: navigationController.view];
}   
else
{
     // use this mehod on ios6
     [self.window setRootViewController:navigationController];
}

}
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
    if(self.shouldRotate ) //shouldRotate is my flag
    {
         self.shouldRotate = NO;
         return (UIInterfaceOrientationMaskLandscapeRight);
    }
    return (UIInterfaceOrientationMaskPortrait);
}

そして私のビューコントローラーでは、横向きで使用しているはずです

 - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
     AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self)
    {
         appDelegate.shouldRotate = YES;
        // Custom initialization
    }
     return self;
 }



- (BOOL)shouldAutorotate
{
     return YES;
}

- (NSUInteger)supportedInterfaceOrientations
{
      return UIInterfaceOrientationMaskLandscape;
}

私のビューコントローラーでは、potraitが正しく機能しており、

- (BOOL)shouldAutorotate
{
     return YES;
}

- (NSUInteger)supportedInterfaceOrientations
{
      return UIInterfaceOrientationMaskPortrait;
}

誰もがこれを行うことを提案できますか

前もって感謝します

4

2 に答える 2

0

これは私にとってはうまくいっています。NavigationControllerを削除し、次のように変更しました

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
    {
        self.viewController = [[PlashViewController alloc] initWithNibName:@"PlashViewController" bundle:nil];
    }
    self.window.rootViewController = self.viewController;
   [self.window makeKeyAndVisible];
   return YES;
}

私のアプリでは、このメソッドをビューコントローラーに次のように配置し、plist と target で、縦方向に ビューを表示するために、 Portrait 、 Landscapeleft 、 Landscaperight などの 3 つの方向を指定しました。

-(BOOL)shouldAutorotate
{
    return YES;
}

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}

ビューを横向きに表示する

 - (BOOL)shouldAutorotate
{
    return YES;
}

-(NSUInteger)supportedInterfaceOrientations
{
   return UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight;
}
于 2012-12-14T07:44:33.587 に答える
0

iOs 6 では rootviewcontroller だけがこれらのことを処理することがわかりました。

于 2012-12-14T07:47:38.573 に答える