閱讀70 返回首頁    go 阿裏雲 go 技術社區[雲棲]


《iPhone與iPad開發實戰—iOS經典應用剖析》連載四

3.3.2 視圖翻轉動畫

點擊主視圖右下角的按鈕,主視圖會翻轉到背後視圖,在背後視圖點擊Done按鈕可以返回到主視圖。在iOS中這是一種視圖跳轉的方式,同時還伴有動畫效果。在本應用中采用的是,通過一個根控製器(控製其它控製器的控製器)RootViewController,來控製主視圖控製器(MainViewController)和背後視圖控製器(FlipsideViewController)。
本應用是通過MainWindow.xib文件加載RootViewController控製器,然後在RootViewController控製器中創建一個MainViewControllerFlipsideViewController
雙擊打開MainWindow.xib窗口圖3-25所示。





3-25 MainWindow.xib窗口
在圖3-26中雙擊RootViewController打開根控製器設計視圖如圖3-26所示。


3-26 根控製器設計視圖
這個根控製器創建的時候沒有對應的視圖對象,我們需要從對象庫中拖拽一個UIView對象,拖拽過程如圖3-27所示。拖拽完成後視圖如圖3-28所示。



3-27拖拽View到根控製器


3-28 拖拽完成後視圖
打開對象庫(Library)是通過菜單Tools->Library打開。

我們還需要在圖3-28視圖添加一個按鈕,該按鈕是一個特殊的按鈕,iOS提供了創建該形式按鈕的模板,首先要在對象庫中找到Rounded Rect Button拖拽到視圖的左下角如圖3-29所示。


3-29拖拽按鈕
這個按鈕如何能變成按鈕呢?這需要選中個按鈕然後在通過菜單Tools->Attributes Inspector打開按鈕檢查器,如圖3-30所示,在圖3-30Type下拉選項中選擇Info Light,這樣上麵的橢圓形按鈕就變成按鈕如圖3-31所示。
  
  3-30屬性檢查器    3-31 Info Light按鈕
在圖3-30Type下拉選項中有很多種按鈕類型,這是開發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.xibnib文件這樣連接。如果是一般的nib如圖3-33所示MainView.xib文件,其中的控製器的名字是File’s Owner,因此需要拖動File’s Owner到控件就可以了。一般情況下輸出口的控件定義在視圖控製器中的,但是在本應用中有些控件是定義在視圖中,在這種情況下我們要拖動那個視圖對象到控件就可以了,如圖3-34所示。



3-32 根控製器和控件輸出口連接


3-33 MainView控製器和控件輸出口連接


3-34 MainView和控件輸出口連接
mainViewController屬性是主視圖控製器,flipsideViewController屬性是背後視圖控製器,flipsideNavigationBar是在背後視圖的導航欄控件。toggleView方法是個IBAction(動作)方法,說明它是與控件事件連接在一起的,該方法是對應按鈕的點擊事件的。
連接IBAction動作事件與輸出口方法類似,要用Interface Builder把對於的nib文件打開,Interface Builder中把控件和控製器(或視圖)連接起來,但是方向與輸出口相反,輸出口連線是按住Control鍵拖動鼠標從控製器(或視圖)到控件,而IBAction動作事件是從控件拖到控製器(或視圖)。

最後更新:2017-04-02 17:09:28

  上一篇:go structs2下的第一個helloworld!
  下一篇:go android Listview下拉滾動時自動加載數據