iOS视图控制器编程指南 --- 呈现一个视图控制器

有两种方法实现一个视图控制器到屏幕上:把它嵌入到一个容器视图控制器或者是直接呈现它。容器视图控制器提供一个应用程序主要的导航功能,但是present 视图控制器也是一个重要的导航工具。你可以直接使用presentation 在当前视图控制器的最上层显示一个新的视图控制器。典型地,当你想要实现模态界面的时候直接present 视图控制器,但是你也可以基于其它目的使用它们。

对呈现视图控制器的支持内建于类UIViewController中,而且对所有的视图控制器对象都是有效的。你可以在其它任何视图控制器上present 任何视图控制器,尽管UIKit可能会对不同的视图控制器改变要求。Present 一个视图控制器在原始的视图控制器(被称作presenting 视图控制器)和新的将被陈列的视图控制器(被称作presented 视图控制器)之间建立一种关系。这种关系形成了视图控制器层次结构的一部分,而且在合适的位置一直保留,直到presented 视图控制器被dismiss。

展示(Presentation)和过度(Transition)过程

呈现一个视图控制器是一个快捷和容易的方式用来animate 新的内容到屏幕上。presentation机械装置内置在UIKit中,让你使用内置或者自定义动画(animations)的方式来显示一个新的视图控制器。内置的presentations 和 animations 仅仅需要非常少的代码,因为UIkit为你处理所有的工作。你也可以创建自定义的presentations和animations,也仅仅需要一点额外的努力,可以在你的任何视图控制器中使用它们。

你可以通过编码的方式或者使用segues 来开始一个视图控制器的presentation。如果在设计的时候你了解你的应用程序的导航功能,segues 是开始presentations的最简单方式。对于更多的动态界面,或者万一没有专用的控制来开始segue, 那么使用UIViewController的方法来呈现你的视图控制器。

presentation styles

一个视图控制器的presentation style 决定它在屏幕上的显示。UIKit 定义了许多标准的presentation风格,一个特定的显示和意图。你也可以定制你自己的presentation风格。当设计你的app的时候,为你想要做的事情选择最合适的presentation风格,给你想要呈现的视图控制器的modalPresentationsStyle 属性指定合适的常量。

Full-Screen Presentation style

全屏presentation styles 覆盖整个屏幕,阻止视图控制器与底层的内容交互。在一个水平的regular 环境中,只有全屏风格视图中的一个完全覆盖了底层的内容。如果全屏的视图包含变暗或者透明的部分,那么允许底层视图控制器对应的部分穿过全屏视图显示出来。在水平的compact 环境中,全屏presentation 自动适应UIModalPresentationFullScreen 风格,覆盖位于顶层视图之下的内容。

图8-1 使用
 UIModalPresentationFullScreenUIModalPresentationPageSheet,
and UIModalPresentationFormSheet styles,来举例说明在一个水平的regular
环境中presentations的显示。在图中,绿色的视图控制器在左上角显示,蓝色的视图控制器在右上角显示,每个presentation 的风格都显示在下面。对于一些presentation 风格,UIKit 在两个视图控制器的内容之间插入了一个暗淡的视图。

图8-1全屏presentation styles

-注意:当使用UIModalPresentationFullScreen 呈现一个视图控制器的时候,在切换动作(transition animations)完成之后,UIKit 通常移除当前视图之下的视图控制器。你可以通过指定 UIModalPresentationOverFullScreen
风格来阻止移除这些视图控制器。当presented视图控制器有透明区域的时候,你可能使用这个风格,它可以让底下的内容穿过透明区域显示出来。

当使用全屏幕presentation 风格中的一种的时候,这个视图控制器开始presentation时必须自己覆盖整个屏幕。如果presenting视图控制器没有覆盖整个屏幕,那么UIKit唤醒这个视图控制器层次结构直到它找到一个正在工作的视图控制器。如果没有找到一个中间视图控制器来填充屏幕,那么UIKit使用窗口的根视图来填充。

The Popover style

UIModalPresentationPopover 风格在一个popover
视图中显示一个视图控制器。Popovers 是有用的,在为一个焦点对象或者是被选择的对象显示额外的信息或者列出相关的项。在一个水平的regular 环境中,popovers视图仅仅覆盖屏幕的一部分,如图8-2所示。在一个水平的compact 环境中,popovers默认适应UIModalPresentationOverFullScreen  presentation风格。在popover视图之外点击屏幕就可以自动地dismiss
popover视图。

图8-2 The popover presentation style

因为在一个水平的compact 环境中, popovers自动适应full-screen presentations,你通常需要修改你的popover代码来处理这种适应。在full-screen模式下,你需要一个方法来dismiss一个presented popover。你可以通过增加一个按钮,把popover嵌入到一个dismissible 容器视图控制器或者改变它自己的适应行为来实现。更多关于怎样配置一个popover presentation 的技巧,see  Presenting
a View Controller in a Popover
.

The Current Context Styles

在你的界面中 UIModalPresentationCurrentContext
风格覆盖一个指定的视图控制器。当使用contextual 风格时,你通过设置它的definesPresentationContext
属性为YES来指定你想要覆盖的视图。图8-3举例说明了一个当前的context presentation 仅仅覆盖了split 视图控制器的一个子视图控制器。

图8-3 The current context presentation style

-注意:当使用UIModalPresentationFullScreen风格来呈现一个视图控制器的时候,在切换动作完成后,UIKit自动移除底层的视图。你可以通过指定 UIModalPresentationOverCurrentContext 风格来阻止移除这些视图。当presented视图控制器有透明区域的时候你可能使用这种风格来让之下的内容穿过透明区域显示出来。

在presentation期间,视图控制器定义presentation 上下文环境,也可以定义过渡动画来使用。通常的,UIKit 在屏幕上animates 视图控制器使用的是presented视图控制器的modalTransitionStyle
属性的值。如果presentation上下文视图控制器的 providesPresentationContextTransitionStyle
设置为了YES,那么UIKit使用这个视图控制器的modalTransitionStyle 属性的值。

当切换到一个水平的compact 环境中时,当前的context styles 自动适应UIModalPresentationFullScreen 
风格。为了改变这种行为,使用一个适配的presentation delegate 来指定一个不同的presentation 风格或者视图控制器。

Custom Presentation Styles

UIModalPresentationCustom 风格让你使用你自定义的风格来呈现一个视图控制器。创建一个定制的style
涉及到子类化UIPresentationController 
,使用它的方法来animate 任意定制的视图到屏幕上,为presented视图控制器设置大小和位置。因为变更为了presented视图控制器的traits,presentation视图控制器也处理发生的任何适应性。更多关于怎样定义个定制的presentation控制器的内容,see  Creating
Custom Presentations

Transition Styles

。。。未完待续

时间: 2024-12-04 11:15:16

iOS视图控制器编程指南 --- 呈现一个视图控制器的相关文章

iOS视图控制器编程指南 --- 实现一个容器视图控制器

容器视图控制器是一种结合多个视图控制器的内容到一个单一的用户界面上的方式.容器视图控制器经常被用来使导航更方便,基于已经存在的内容创建一个新的用户界面类型.例如,在UIKit中的容器视图控制器包括UINavigationcontroller,UITabBarcontroller 和 UISplitViewcontroller,它们都可以使用户界面在不同视图部分之间的切换和导航更加的容易. 设计一个自定义的容器视图控制器 在几乎所有的方面,一个容器视图控制器就像其它任何一个内容视图控制器一样,它管

UI - 视图控制器跳转另一个视图控制器特效总结

1. 从一个视图控制器跳转另一个视图控制器的方式是可以进行设置的 CATransition *animation = [[CATransition alloc]init]; animation.duration = 1; animation.type = @"pageCurl";  //立方体翻滚效果 animation.subtype = @"fromBottom";  //从底部开始 [self.view.window.layer addAnimation:an

View Programming Guide for iOS 视图编程指南 - iOS

1 有关 Windows and Views 每个应用都至少有一个 window 和一个 view. 1.1 添加额外的 Window 一般在有外界显示设备的时候才需要添加额外的 window 下面的代码举了一个例子,这里假定对象实现了方法 externalWindow,externalWindow 存储一个 window 的引用 - (void)configureExternalDisplayAndShowWithContent:(UIViewController*)rootVC { // C

MPMoviePlayerViewController的使用 (不直接将播放器放到主视图控制器,而是放到一个内部模态视图控制器中)

其实MPMoviePlayerController如果不作为嵌入视频来播放(例如在新闻中嵌入一个视频),通常在播放时都是占满一个屏幕的,特别是在 iPhone.iTouch上.因此从iOS3.2以后苹果也在思考既然MPMoviePlayerController在使用时通常都是将其视图 view添加到另外一个视图控制器中作为子视图,那么何不直接创建一个控制器视图内部创建一个MPMoviePlayerController属性并且默 认全屏播放,开发者在开发的时候直接使用这个视图控制器.这个内部有一个

用 php 实现一个视图组件和模板引擎——基础

只要不是做后端接口开发和一些作为守护进程之类的服务器脚本,大多数时候都是在和浏览器打交道,因此合理组织并展现 html 标签是最为常见的工作.一般大家使用框架时,都会自带有一套视图组件和模板引擎. 我们不讨论这些组件和引擎的好坏.因为这些东西已经经过考验,可以在生产环境下使用.我们现在只是为了学习一些东西,这时候了解一些原理上的可能对以后的帮助更大,如果一些人真的很有时间,利用这些基础知识完全可以写一个自己的组件,即可当做练习,也可以拿去自用. 好了,说这么多,我还是希望很多人明白,视图和模板引

MVC怎么在当前视图中,传递参数给到另外一个视图?

在TransData.cshtml视图中: <div> <!--在一个视图中,请求另外一个视图,并且将数据传到另外一个视图--> <!--视图中调用无返回值的方法,需要加上大括号--> @{ViewBag.ViewTransData="我是视图TransData中定义的数据,将要被传递到LoadViewBySelf视图中";} @{Html.RenderPartial("LoadViewBySelf");} </div>

IOS开发——UI进阶篇(八)pickerView简单使用,通过storyboard加载控制器,注册界面,通过xib创建控制器,控制器的view创建,导航控制器的基本使用

一.pickerView简单使用 1.UIPickerViewDataSource 这两个方法必须实现 // 返回有多少列 - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView; // 返回第component有多少行 - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component;

Apache Spark 2.2.0 中文文档 - Spark Streaming 编程指南 | ApacheCN

Spark Streaming 编程指南 概述 一个入门示例 基础概念 依赖 初始化 StreamingContext Discretized Streams (DStreams)(离散化流) Input DStreams 和 Receivers(接收器) DStreams 上的 Transformations(转换) DStreams 上的输出操作 DataFrame 和 SQL 操作 MLlib 操作 缓存 / 持久性 Checkpointing Accumulators, Broadcas

Asp.Net MVC4.0 官方教程 入门指南之三--添加一个视图

Asp.Net MVC4.0 官方教程 入门指南之三--添加一个视图 在本节中,您需要修改HelloWorldController类,从而使用视图模板文件,干净优雅的封装生成返回到客户端浏览器HTML的过程. 您将创建一个视图模板文件,其中使用了ASP.NET MVC 3所引入的Razor视图引擎.Razor视图模板文件使用.cshtml文件扩展名,并提供了一个优雅的方式来使用C#语言创建所要输出的HTML.用Razor编写一个视图模板文件时,将所需的字符和键盘敲击数量降到了最低,并实现了快速,