只为此心无垠

A blog for Jekyll

凤凰花开开两季,之余青春止于青春


Download the theme

View Controller Catalog for iOS(四)-Split View Controllers

分屏控制器

UISplitViewController类是管理两个窗格信息的容器视图控制器。第一个窗格具有320点的固定宽度,以及与visible window相等的高度。第二个窗格填充剩余的空间。 图4-1显示了一个分屏控制器界面。

图4-1   分屏视图界面img

split view界面的窗格包含视图控制器管理的内容。由于该窗格包含应用程序的具体内容,所以由你来管理这两个视图控制器之间的相互作用。然而,旋转和其它系统相关的行为由split view controller本身管理。

split view controller必须始终在创建任何界面的root。换言之,你必须始终安装UISplitViewController对象的视图,作为你的应用程序窗口的根视图。split view controller的窗格则可能包含导航控制器,标签栏控制器,或者您需要实现界面的任何其他类型的视图控制器。split view controller不能模态呈现。

split view controller集成到应用程序中最简单的方法是从一个新项目开始。在Xcode中基于split view的应用程序模板,为构建集成split view controller的界面提供了一个很好的起点。实现split view controller界面需要的一切都已具备。你所要做的就是,修改视图控制器的数组来呈现您的内容。修改这些视图控制器的过程是iPhone应用程序的过程中使用是相同的。唯一的区别是,现在有更多的屏幕空间,可用于显示您的详细相关内容。但是,您也可以将split view controller集成到现有的界面。

使用Storyboard创建split view controller

如果要创建一个新的Xcode项目,Master-Detail Application template已经在storyboard包含了split view,设置为第一个场景。

split view controller添加到现有的应用程序:

  1. 打开应用程序的main storyboard

  2. 从library 拖拽出split view controller

    Interface Builder中创建一个分屏控制器,导航控制器和视图控制器,并创建它们之间的关系。这些关系确定新创建的视图控制器,作为分割视图控制器的左边和右边窗格。

  3. 通过在Attributes inspector中选择Is Initial View Controller,将它作为第一个视图控制器,来显示(或以另一种方式在用户界面中呈现视图控制器)。

管理在拆分视图中嵌入的两个视图控制器的内容是你的责任。您配置这些视图控制器,就像你会在你的应用程序配置其他视图控制器。例如,对于嵌入的导航和标签栏控制器,你可能需要指定其他视图控制器的信息。

代码方式创建split view controller

以编程方式创建split view controller,创建UISplitViewController类的实例,并将view controller赋值给其两个属性。因为它的内容是从您提供的视图控制器即时建立,因此创建一个拆分视图控制器时,你不必指定nib file。因此,你可以只使用init方法来初始化它。清单4-1显示了在启动时如何创建和配置分屏视图界面的例子。用你的应用程序的内容视图控制器对象替换第一和第二视图控制器。window变量被认为是一个输出,指向窗口从应用程序的主nib文件加载。

清单4-1   编程方式创建一个拆分视图控制器

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
   MyFirstViewController* firstVC = [[MyFirstViewController alloc] init];
   MySecondViewController* secondVC = [[MySecondViewController alloc] init];
 
   UISplitViewController* splitVC = [[UISplitViewController alloc] init];
   splitVC.viewControllers = [NSArray arrayWithObjects:firstVC, secondVC, nil];
 
    window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    window.rootViewController = splitVC;
   [window makeKeyAndVisible];
 
   return YES;
}

在拆分视图支持方向变化

split view controller依赖于它的两个被包含的视图控制器,来确定方位支持哪些。如果被包含视图控制器同时支持一个方向,程序才支持。即使视图控制器当前并不显示,它也必须支持此方向。当方向发生变化,split view controller自动处理大部分的旋转行为。

横屏时,split view controller并排呈现两个窗格,并使用分割线将它们分开。竖屏时,split view controller要么显示出两个窗格,要么仅示出了第二个较大的窗格,且提供一个工具栏按钮,用于使用popover,具体取决于由splitViewController:shouldHideViewController:inOrientation: 委托方法返回的值。

最近的文章

Hit-testing in iOS

Hit-testing是一个确定point(如触摸点)是否在绘制在屏幕上的既定图形对象(如UIView)的过程。IOS使用Hit-testing,以确定哪些UIView是用户的手指下最顶层的视图,即应该接收触摸事件。通过使用前序深度优先遍历算法搜索视图层次,来实现Hit-testing。在解释Hit-testing的工作原理之前,重要的是要了解何时执行Hit-testing。下图说明了单次触摸的流程,从手指触摸屏幕直到手指离开屏幕为止:如上图所示,每当手指触摸屏幕时都会执行Hit-test...…

Hit-testing继续阅读
更早的文章

View Controller Catalog for iOS(五)-Popovers

Popovers虽然本身不是一个视图控制器,UIPopoverController类管理视图控制器的呈现。您可以使用popover controller对象展示当前内容,popover是一个浮动在你的应用程序的窗口上方的可视化图层。Popovers提供呈现或收集来自用户的信息的轻量的方式,并常用在以下情况: 要在屏幕上显示对象的信息 管理经常访问的工具或配置选项 呈现一个动作列表,来执行视图内某个对象 竖屏时,要从split view controller呈现一个窗格对于上述操作,...…

View Controller Catalog for iOS继续阅读