IOS開發之視圖和視圖控制器

來源:互聯網
上載者:User

標籤:style   blog   http   color   os   java   使用   io   strong   

        視圖(View), 視圖控制器(ViewController)是IOS開發UI部分比較重要的東西。在學習視圖這一塊的東西的時候,感覺和Java Swing中的Panel差不多。在UIKit架構中都有一個UIWindow來容納我們的View。應用程式中幾乎全部的可視控制項都是UIView以及UIView的子類的執行個體,並且UIWindow也是UIView的子類。UIWinow可以不藉助於父類別檢視顯示在螢幕上,其餘的視圖都需要添加到父視圖中才能顯示。視窗是用來顯示視圖的,下面我們將會結合著執行個體來具體的學習一下IOS中的View和ViewController

        1.首先我們需要建一個EmptyProject來測試我們的View和ViewController. 我們空工程的檔案結構如下,我們只需在AppDelegate.m中添加我們的視圖,還是那句話為了更好的理解我們的視圖,所有視圖的建立和配置我們都用代碼編寫。

          

        2.在學習UIView之前我們先在我們的EmptyProject中添加一個視圖,看一下效果,上面的代碼是為我們的EmptyProject添加一個UIWindow,是系統為我們建立的,我們接下來要放置的UIIView都是放在Window中,一般每個應用都只有一個Window,當然有的遊戲會有多個應用視窗。下面的一段代碼是往我們Window上添加一個主視圖,通過CGRectMake來給我們新添的View定位。 CGRectMake(x, y, width, height);  配置背景顏色為greenColor,最後添加到我們的window上。

        3.介面都是視圖對象,即在UIView類的執行個體中進行布局,UIView表示螢幕上的一塊矩形地區,負責渲染矩形地區中的內容,並且響應該地區內發生的觸摸事件。我們還可以把視圖看做是一個視圖容器,視圖上面還可以添加一個子視圖。往父視圖中添加的SubView會被放在一個數組中。往我們SuperView中添加的SubView的做標和index都是相對於我們的父視圖來配置的。我們為上面的視圖在添加一個subView,代碼如下:

 

        運行效果如下:

        下面是iOS提供的一些管理子視圖的方法,常用方法如下:

            (1) initWithFrame : 通過frame初始化視圖,參數為CGRectMake(x, y, width, height);

            (2) insertSubView: atIndex: 往指定層上插入視圖,那個View調用該方法,index就是相對於誰。

            (3) insertSubView: aboveSubView: 在某個視圖上插入子視圖。

            (4) insertSubView: belowSubView: 在某個子視圖的後面添加一個新的視圖

            (5) bringSubViewToFront: 把子視圖放到最前

            (6) sendSubViewToBack: 把子視圖放到最後

            (7) exchangeSubviewAtIndex: withSubviewAtIndex: 交換兩個視圖的前後順序

            (8) removeFromSuperview: 從父視圖中移除view

            (9) -(void) addSubview: (UIView *) view 添加一個視圖

         視圖的層次用index來區分,這個值從0開始以步長1依次增加,index為0的時候代表視圖層次的最底層,下面是蘋果官方文檔對Views的介紹的:

        

 

    視圖層大致分為下面的幾類

        1.[內容] 檢視

                [內容] 檢視用於增強其他視圖的功能,或者為視圖內容提供額外的視覺分隔,比如UIScorllView類用於顯示因內容太大而無法顯示在一個螢幕上的視圖,也就是自動添加捲軸,入下面第一個圖。UITableView類是UIScrollView類的子類,用於管理資料列表,二,還有其他的[內容] 檢視在這就不一一列舉啦。

                                              

        2.控制項

                控制項用於建立大多數應用程式的使用者介面。控制項是一種特殊類型的視圖,繼承子UIControl超類,通常要綁定回調方法(比如Target-Action回調和委託回調),用於使用者互動。控制項包括按鍵,文字框,滑塊,和切換開關。部分控制項如下所示:

                            

        3.顯示視圖

                控制項和很多其他類型的視圖都提供了互動行為,而另外一些視圖則只是用於簡單的顯示資訊。具有這種行為的UIKit類包括 UIImageView, UILabel, UIProgressView, UIActivityIndicatorView;下面是UIProgressView顯示視圖

                          
        4.文本和Web視圖

                文本和web視圖為應用程式提供更為進階的顯示多行文本的方法。UITextView類支援在捲動區域內顯示和編輯多行文本;而UIWebView類則提供顯示HTML內容的方法         

                    

       5.警告視圖和動作表單

                警告視圖和動作表單用於即刻取得使用者的注意。 UIAlertView類在螢幕上彈出一個藍色的警告框,而UIActionSheet類則從螢幕的底部划出動作框

                                            

         6.導航視圖

            頁籤條和導航條和視圖控制器結合使用,為使用者提供從一個螢幕到另一個螢幕的導航工具。在使用是,你通常不必直接UITableBar和UINavigationBar的項,而是通過恰當的控制器介面或Interface Builder來對其進行配置,Table Bar 和 Navigation Bar如下:

                          

          上面視圖部分先就說這麼多吧,那麼我們的視圖控制器應如何使用呢? 在本文剛開始的時候我們加入的view的代碼都是在AppDelegate.m的檔案裡加的,其實沒沒那麼做的,如果我們一直在上面的檔案中執行個體化我們的各種控制項,我們的應用程式代碼會非常難維護。那麼我們如何給一個EmptyProject添加一個視圖控制器呢?上面貼啦這麼的多的圖片啦,接下來讓我們上點代碼吧!

        1.我們在一個空工程中建立一個視圖控制器的類MainViewController, 讓MainViewController繼承於UIViewController, MainViewController.h檔案的內容如下:

123 #import <UIKit/UIKit.h>@interface MainViewController : UIViewController@end

 

       2.我們在MainViewController.m中進行我們的視圖聲明和執行個體化,代碼如下:

1234567891011121314151617181920 #import "MainViewController.h" //用延展隱藏我們的組件@interface MainViewController () @property (nonatomic, strong) UIView *subView; @end//-------實現部分-----------@implementation MainViewController//主視圖載入後要做的事情-(void)viewDidLoad{    //執行個體化view並添加到mainView    self.subView = [[UIView alloc] initWithFrame:CGRectMake(50, 50, 100, 150)];    self.subView.backgroundColor = [UIColor brownColor];    [self.view addSubview:self.subView]; }@end

     3.我們需要把我們建立的視圖控制器和我們的視窗關聯,在AppDelegate.m中執行個體化MainViewController並添加到window中,代碼如下:

12345678910111213 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];    // Override point for customization after application launch.    self.window.backgroundColor = [UIColor whiteColor];    [self.window makeKeyAndVisible];          //執行個體化MainViewController,並添加到window    MainViewController * mianViewController = [[MainViewController alloc] init];    [self.window addSubview:mianViewController.view];         return YES;}

    ?    ?先暫且這麼理解著視圖和視圖控制器,隨著以後的深入的學習會隨時更新和修改部落格的。    

IOS開發之視圖和視圖控制器

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.