【问题标题】:How can I set the Inital Orientation for a UISplitViewCOntroller-based iPad App如何为基于 UISplitViewCOntroller 的 iPad 应用程序设置初始方向
【发布时间】:2011-02-10 19:59:51
【问题描述】:

我有一个在 iPad 上运行良好的拆分视图应用程序。它使用默认设置(纵向弹出窗口,横向左侧的表格视图)。应用程序运行后视图会正确移动。我看到的问题是,当应用程序启动(在模拟器中)以横向模式运行时,UI 范例是用于纵向模式的(主列表是一个弹出窗口)是加载的。

我认为这是模拟器的一些奇怪之处,或者我的主视图控制器上缺少一个选项。

【问题讨论】:

    标签: cocoa-touch ipad ios-simulator


    【解决方案1】:

    我遇到了与此处描述的相同的问题。令人尴尬的是,解决方案很简单,只需在将视图添加到窗口之前手动设置它的框架。

    只需检查界面方向,如果是横向,则切换应用程序框架的宽度和高度尺寸(即,宽度变为高度,高度变为宽度)。

    CGRect frame = [[UIScreen mainScreen] applicationFrame];
    
    switch(controller.interfaceOrientation){
        case UIInterfaceOrientationPortrait:
        case UIInterfaceOrientationPortraitUpsideDown:
          [controller.view setFrame:frame];
          break;
        case UIInterfaceOrientationLandscapeLeft:
        case UIInterfaceOrientationLandscapeRight:
          [controller.view setFrame:CGRectMake(frame.origin.x, frame.origin.y, frame.size.height, frame.size.width)];
          break;
    }
    

    【讨论】:

    • 我不认为这让开发人员感到尴尬;这是SDK中的一个缺陷。不可能需要此步骤。如果您没有在您的应用程序中使用拆分视图控制器,您将不必执行此步骤。
    【解决方案2】:

    也将其添加为答案,希望对需要相同修复的人来说更明显。

    我解决了这个问题。我正在等待加载和解析外部 XML 流。结果,我在 applicationDidFinishLaunching 方法之后使用 splitViewController 视图加载了窗口。

    添加:

    [window addSubview: splitViewController.view]; 
    [window makeKeyAndVisible]; 
    

    回到那个方法修复了方向识别

    【讨论】:

      【解决方案3】:

      我通过这样做成功地显示了加载视图

      [window addSubview:self._splitViewController.view];
      [window addSubview:self._myLoadingView];
      self._splitViewController.view.hidden = YES;
      [window makeKeyAndVisible];
      [self loadAllDatas];
      self._splitViewController.view.hidden = NO;
      

      我工作正常

      【讨论】:

      • 如果您的视图不是加载的 SplitViewController 的一部分,这对您有用吗?部分问题是我希望出现“加载”视图。当我这样做时,它抛弃了一切,包括以您上面概述的方式做事的方向支持。
      【解决方案4】:

      它不能正常工作,因为 UISplitViewController 的默认细节视图控制器只是一个普通的 UIViewController。 UIViewController 的 shouldRotate 方法仅在纵向模式下返回 YES。

      在 shouldRotate 中为所有方向添加一个返回 YES 的通用 UIViewController 解决了我的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多