天天看點

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

        視圖(view), 視圖控制器(viewcontroller)是ios開發ui部分比較重要的東西。在學習視圖這一塊的東西的時候,感覺和java swing中的panel差不多。在uikit架構中都有一個uiwindow來容納我們的view。應用程式中幾乎全部的可視控件都是uiview以及uiview的子類的執行個體,并且uiwindow也是uiview的子類。uiwindow可以不借助于父類視圖顯示在螢幕上,其餘的視圖都需要添加到父視圖中才能顯示。視窗是用來顯示視圖的,下面我們将會結合着執行個體來具體的學習一下ios中的view和viewcontroller

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

          

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

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

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

        3.界面都是視圖對象,即在uiview類的執行個體中進行布局,uiview表示螢幕上的一塊矩形區域,負責渲染矩形區域中的内容,并且響應該區域内發生的觸摸事件。我們還可以把視圖看做是一個視圖容器,視圖上面還可以添加一個子視圖。往父視圖中添加的subview會被放在一個數組中。往我們superview中添加的subview的坐标和index都是相對于我們的父視圖來配置的。我們為上面的視圖在添加一個subview,代碼如下:

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

        運作效果如下:

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

        下面是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的介紹的截圖:

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

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

        1.容器視圖

                容器視圖用于增強其他視圖的功能,或者為視圖内容提供額外的視覺分隔,比如uiscorllview類用于顯示因内容太大而無法顯示在一個螢幕上的視圖,也就是自動添加滾動條,入下面第一個圖。uitableview類是uiscrollview類的子類,用于管理資料清單,如圖二,還有其他的容器視圖在這就不一一列舉啦。

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

        2.控件

                控件用于建立大多數應用程式的使用者界面。控件是一種特殊類型的視圖,繼承子uicontrol超類,通常要綁定回調方法(比如target-action回調和委托回調),用于使用者互動。控件包括按鍵,文本框,滑塊,和切換開關。部分控件如下所示:

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

        3.顯示視圖

                控件和很多其他類型的視圖都提供了互動行為,而另外一些視圖則隻是用于簡單的顯示資訊。具有這種行為的uikit類包括 uiimageview, uilabel, uiprogressview, uiactivityindicatorview;下面是uiprogressview顯示視圖

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

        4.文本和web視圖

                文本和web視圖為應用程式提供更為進階的顯示多行文本的方法。uitextview類支援在滾動區域内顯示和編輯多行文本;而uiwebview類則提供顯示html内容的方法         

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

       5.警告視圖和動作表單

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

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

         6.導航視圖

            頁簽條和導覽列和視圖控制器結合使用,為使用者提供從一個螢幕到另一個螢幕的導航工具。在使用是,你通常不必直接uitablebar和uinavigationbar的項,而是通過恰當的控制器接口或interface builder來對其進行配置,table bar 和 navigation bar如下:

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

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

        1.我們在一個空工程中建立一個視圖控制器的類mainviewcontroller, 讓mainviewcontroller繼承于uiviewcontroller, mainviewcontroller.h檔案的内容如下:

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

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

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