天天看點

《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動作事件是從控件拖到控制器(或視圖)。

繼續閱讀