0

私はiOS6アプリケーションに取り組んでおり、次の方法を使用してUIviewの回転を処理しました...

-(NSUInteger)supportedInterfaceOrientations

{
    return UIInterfaceOrientationMaskPortrait;
}


- (BOOL) shouldAutorotate {
    return YES;
}

すべてが正常に機能しています。問題は、デバイスの向きに基づいて最初のビューの読み込みが決定されることです。たとえば、supportedInterfaceOrientationsビューで強制的に縦向きとして戻ったにもかかわらず、デバイスを横向きにした場合、デバイスを回転させてその後、ポートレートはランドスケープモードにならず、すべて正常に機能します。デバイスの向きに関係なく、特定のモードでビューをロードすることは可能ですか?

私はグーグルで検索しましたが、何も機能しませんでした。

注:私はナビゲーションコントローラーを使用しています。そして、UINavigationControllerのカテゴリを追加しました。

//IOS6で方向を処理するカスタムカテゴリ

@implementation UINavigationController (Rotation_IOS6)

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

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

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
}
@end

ありがとう

4

1 に答える 1

0

次の方法を使用します。

 - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
  return UIInterfaceOrientationMaskPortrait;
}

categoryこのメソッドをfor UINavigationControllerinとともに追加しappDelegateます。

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
  UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
  //check for which controller u need these methods
  if([navigationController.visibleViewController isKindOfClass:[yourViewController class]]) //provide specific view controller where u want protrait
  {
    [navigationController shouldAutorotate];
    [navigationController supportedInterfaceOrientations];
    [navigationController preferredInterfaceOrientationForPresentation];
  }
  return UIInterfaceOrientationMaskAll;
}

category: forを追加した場合は、すべての viewController から削除しますUINavigationController。それは appDelegate にのみある必要があります。

于 2013-01-03T11:54:04.310 に答える