代码之家  ›  专栏  ›  技术社区  ›  MystikSpiral

如何设置基于uisplitviewcontroller的iPad应用程序的初始方向?

  •  1
  • MystikSpiral  · 技术社区  · 16 年前

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

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

    4 回复  |  直到 13 年前
        1
  •  2
  •   BWW    16 年前

    我遇到了和这里描述的相同的问题。令人尴尬的是,解决方案非常简单,只需在将视图添加到窗口之前手动设置其框架。

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

    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;
    }
    
        2
  •  0
  •   MystikSpiral    16 年前

    加上这一点作为答案,希望对那些需要同样修复的人来说,这一点会更加明显。

    我解决了这个问题。我正在等待加载和分析外部XML流。结果,我在我的 applicationDidFinishLaunching 方法。

    添加:

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

    回到那个方法,修正了方向识别

        3
  •  0
  •   raphaelharboun    16 年前

    我通过执行以下操作成功地显示了加载视图

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

    我工作得很好

        4
  •  0
  •   emu    13 年前

    它不能正常工作,因为uisplitviewcontroller的默认细节视图控制器只是一个普通的uiviewcontroller。uiviewController的shouldState方法只对纵向模式返回yes。

    添加一个通用的uiviewController,返回所有方向的shouldState中的yes,为我解决了这个问题。

    推荐文章