天天看点

《iPhone与iPad开发实战—iOS经典应用剖析》连载四

3.3.2

视图翻转动画

点击主视图右下角的按钮,主视图会翻转到背后视图,在背后视图点击done按钮可以返回到主视图。在ios中这是一种视图跳转的方式,同时还伴有动画效果。在本应用中采用的是,通过一个根控制器(控制其它控制器的控制器)rootviewcontroller,来控制主视图控制器(mainviewcontroller)和背后视图控制器(flipsideviewcontroller)。

本应用是通过mainwindow.xib文件加载rootviewcontroller控制器,然后在rootviewcontroller控制器中创建一个mainviewcontroller和flipsideviewcontroller。

双击打开mainwindow.xib窗口图3-25所示。

《iPhone与iPad开发实战—iOS经典应用剖析》连载四

图3-25 mainwindow.xib窗口

在图3-26中双击rootviewcontroller打开根控制器设计视图如图3-26所示。

《iPhone与iPad开发实战—iOS经典应用剖析》连载四

图3-26

根控制器设计视图

这个根控制器创建的时候没有对应的视图对象,我们需要从对象库中拖拽一个uiview对象,拖拽过程如图3-27所示。拖拽完成后视图如图3-28所示。

《iPhone与iPad开发实战—iOS经典应用剖析》连载四

图3-27拖拽view到根控制器

《iPhone与iPad开发实战—iOS经典应用剖析》连载四

图3-28

拖拽完成后视图

打开对象库(library)是通过菜单tools->library打开。

我们还需要在图3-28视图添加一个按钮,该按钮是一个特殊的按钮,ios提供了创建该形式按钮的模板,首先要在对象库中找到rounded

rect button拖拽到视图的左下角如图3-29所示。

《iPhone与iPad开发实战—iOS经典应用剖析》连载四

图3-29拖拽按钮

这个按钮如何能变成按钮呢?这需要选中个按钮然后在通过菜单tools->attributes inspector打开按钮检查器,如图3-30所示,在图3-30中type下拉选项中选择info

light,这样上面的椭圆形按钮就变成按钮如图3-31所示。

《iPhone与iPad开发实战—iOS经典应用剖析》连载四

  图3-30属性检查器    图3-31 info light按钮

在图3-30中type下拉选项中有很多种按钮类型,这是开发ios定义好的几个模板按钮。这些按钮在ios都有这特殊的含义,如果不是真正需要一般情况不用轻易使用。就是显示应用信息,一般就是在实用型应用程序中使用。苹果对于这些按钮使用指南和规范。

现在视图翻转的外围工作已经基本完成,我们可以为程序添加代码了,首先添加rootviewcontroller.h根控制器h文件如“代码清单3-1

password/classes/rootviewcontroller.h”所示。

【代码清单3-1】 password/classes/rootviewcontroller.h

#import <uikit/uikit.h>

@class mainviewcontroller;

@class flipsideviewcontroller;

@interface rootviewcontroller : uiviewcontroller {

iboutletuibutton *infobutton;

mainviewcontroller*mainviewcontroller;

flipsideviewcontroller*flipsideviewcontroller;

uinavigationbar*flipsidenavigationbar;

}

@property (nonatomic, retain) uibutton *infobutton;

@property (nonatomic, retain) mainviewcontroller*mainviewcontroller;

@property (nonatomic, retain) uinavigationbar*flipsidenavigationbar;

@property (nonatomic, retain)flipsideviewcontroller *flipsideviewcontroller;

- (ibaction)toggleview;

@end

在h文件中需要定义成员变量、方法和属性,其中infobutton是有关视图中按钮对应。

除了在程序中为控件定义输出口外,还需在中把在视图控制器或视图中定义的输出口的控件成员变量与nib文件中的控件连接起来,如图3-32所示,infobutton控件的连接过程是按住control键使用鼠标选中root

view controller拖动连线到infobutton控件,然后松开control键选择控件的输出口属性,这是在mainwindow.xib的nib文件这样连接。如果是一般的nib如图3-33所示mainview.xib文件,其中的控制器的名字是file’s

owner,因此需要拖动file’s owner到控件就可以了。一般情况下输出口的控件定义在视图控制器中的,但是在本应用中有些控件是定义在视图中,在这种情况下我们要拖动那个视图对象到控件就可以了,如图3-34所示。

《iPhone与iPad开发实战—iOS经典应用剖析》连载四

图3-32

根控制器和控件输出口连接

《iPhone与iPad开发实战—iOS经典应用剖析》连载四

图3-33 mainview控制器和控件输出口连接

《iPhone与iPad开发实战—iOS经典应用剖析》连载四

图3-34 mainview和控件输出口连接

mainviewcontroller属性是主视图控制器,flipsideviewcontroller属性是背后视图控制器,flipsidenavigationbar是在背后视图的导航栏控件。toggleview方法是个ibaction(动作)方法,说明它是与控件事件连接在一起的,该方法是对应按钮的点击事件的。

连接ibaction动作事件与输出口方法类似,要用interface builder把对于的nib文件打开,interface

builder中把控件和控制器(或视图)连接起来,但是方向与输出口相反,输出口连线是按住control键拖动鼠标从控制器(或视图)到控件,而ibaction动作事件是从控件拖到控制器(或视图)。