qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

          IOS開(kāi)發(fā)之視圖和視圖控制器

           視圖(View), 視圖控制器(ViewController)是IOS開(kāi)發(fā)UI部分比較重要的東西。在學(xué)習(xí)視圖這一塊的東西的時(shí)候,感覺(jué)和Java Swing中的Panel差不多。在UIKit框架中都有一個(gè)UIWindow來(lái)容納我們的View。應(yīng)用程序中幾乎全部的可視控件都是UIView以及UIView的子類(lèi)的實(shí)例,并且UIWindow也是UIView的子類(lèi)。UIWindow可以不借助于父類(lèi)視圖顯示在屏幕上,其余的視圖都需要添加到父視圖中才能顯示。窗口是用來(lái)顯示視圖的,下面我們將會(huì)結(jié)合著實(shí)例來(lái)具體的學(xué)習(xí)一下IOS中的View和ViewController
            1.首先我們需要建一個(gè)EmptyProject來(lái)測(cè)試我們的View和ViewController. 我們空工程的文件結(jié)構(gòu)如下,我們只需在AppDelegate.m中添加我們的視圖,還是那句話為了更好的理解我們的視圖,所有視圖的創(chuàng)建和配置我們都用代碼編寫(xiě)。
            2.在學(xué)習(xí)UIView之前我們先在我們的EmptyProject中添加一個(gè)視圖,看一下效果,上面的代碼是為我們的EmptyProject添加一個(gè)UIWindow,是系統(tǒng)為我們創(chuàng)建的,我們接下來(lái)要放置的UIIView都是放在Window中,一般每個(gè)應(yīng)用都只有一個(gè)Window,當(dāng)然有的游戲會(huì)有多個(gè)應(yīng)用窗口。下面的一段代碼是往我們Window上添加一個(gè)主視圖,通過(guò)CGRectMake來(lái)給我們新添的View定位。 CGRectMake(x, y, width, height);  配置背景顏色為greenColor,最后添加到我們的window上。
            3.界面都是視圖對(duì)象,即在UIView類(lèi)的實(shí)例中進(jìn)行布局,UIView表示屏幕上的一塊矩形區(qū)域,負(fù)責(zé)渲染矩形區(qū)域中的內(nèi)容,并且響應(yīng)該區(qū)域內(nèi)發(fā)生的觸摸事件。我們還可以把視圖看做是一個(gè)視圖容器,視圖上面還可以添加一個(gè)子視圖。往父視圖中添加的SubView會(huì)被放在一個(gè)數(shù)組中。往我們SuperView中添加的SubView的坐標(biāo)和index都是相對(duì)于我們的父視圖來(lái)配置的。我們?yōu)樯厦娴囊晥D在添加一個(gè)subView,代碼如下:
            運(yùn)行效果如下:
            下面是iOS提供的一些管理子視圖的方法,常用方法如下:
            (1) initWithFrame : 通過(guò)frame初始化視圖,參數(shù)為CGRectMake(x, y, width, height);
            (2) insertSubView: atIndex: 往指定層上插入視圖,哪個(gè)View調(diào)用該方法,index就是相對(duì)于誰(shuí)。
            (3) insertSubView: aboveSubView: 在某個(gè)視圖上插入子視圖。
            (4) insertSubView: belowSubView: 在某個(gè)子視圖的后面添加一個(gè)新的視圖
            (5) bringSubViewToFront: 把子視圖放到最前
            (6) sendSubViewToBack: 把子視圖放到最后
            (7) exchangeSubviewAtIndex: withSubviewAtIndex: 交換兩個(gè)視圖的前后順序
            (8) removeFromSuperview: 從父視圖中移除view
            (9) -(void) addSubview: (UIView *) view 添加一個(gè)視圖
            視圖的層次用index來(lái)區(qū)分,這個(gè)值從0開(kāi)始以步長(zhǎng)1依次增加,index為0的時(shí)候代表視圖層次的最底層,下面是蘋(píng)果官方文檔對(duì)Views的介紹的截圖:
            視圖層大致分為下面的幾類(lèi)
            1.容器視圖
            容器視圖用于增強(qiáng)其他視圖的功能,或者為視圖內(nèi)容提供額外的視覺(jué)分隔,比如UIScorllView類(lèi)用于顯示因內(nèi)容太大而無(wú)法顯示在一個(gè)屏幕上的視圖,也就是自動(dòng)添加滾動(dòng)條,入下面第一個(gè)圖。UITableView類(lèi)是UIScrollView類(lèi)的子類(lèi),用于管理數(shù)據(jù)列表,如圖二,還有其他的容器視圖在這就不一一列舉啦。
            2.控件
            控件用于創(chuàng)建大多數(shù)應(yīng)用程序的用戶界面。控件是一種特殊類(lèi)型的視圖,繼承子UIControl超類(lèi),通常要綁定回調(diào)方法(比如Target-Action回調(diào)和委托回調(diào)),用于用戶交互。控件包括按鍵,文本框,滑塊,和切換開(kāi)關(guān)。部分控件如下所示:
            3.顯示視圖
            控件和很多其他類(lèi)型的視圖都提供了交互行為,而另外一些視圖則只是用于簡(jiǎn)單的顯示信息。具有這種行為的UIKit類(lèi)包括 UIImageView, UILabel, UIProgressView, UIActivityIndicatorView;下面是UIProgressView顯示視圖
            4.文本和Web視圖
            文本和web視圖為應(yīng)用程序提供更為高級(jí)的顯示多行文本的方法。UITextView類(lèi)支持在滾動(dòng)區(qū)域內(nèi)顯示和編輯多行文本;而UIWebView類(lèi)則提供顯示HTML內(nèi)容的方法
            5.警告視圖和動(dòng)作表單
            警告視圖和動(dòng)作表單用于即刻取得用戶的注意。 UIAlertView類(lèi)在屏幕上彈出一個(gè)藍(lán)色的警告框,而UIActionSheet類(lèi)則從屏幕的底部劃出動(dòng)作框

           6.導(dǎo)航視圖
            頁(yè)簽條和導(dǎo)航條和視圖控制器結(jié)合使用,為用戶提供從一個(gè)屏幕到另一個(gè)屏幕的導(dǎo)航工具。在使用是,你通常不必直接UITableBar和UINavigationBar的項(xiàng),而是通過(guò)恰當(dāng)?shù)目刂破鹘涌诨騃nterface Builder來(lái)對(duì)其進(jìn)行配置,Table Bar 和 Navigation Bar如下:
            上面視圖部分先就說(shuō)這么多吧,那么我們的視圖控制器應(yīng)如何使用呢? 在本文剛開(kāi)始的時(shí)候我們加入的view的代碼都是在AppDelegate.m的文件里加的,其實(shí)沒(méi)沒(méi)那么做的,如果我們一直在上面的文件中實(shí)例化我們的各種控件,我們的應(yīng)用程序代碼會(huì)非常難維護(hù)。那么我們?nèi)绾谓o一個(gè)EmptyProject添加一個(gè)視圖控制器呢?上面貼啦這么的多的圖片啦,接下來(lái)讓我們上點(diǎn)代碼吧!
            1.我們?cè)谝粋€(gè)空工程中新建一個(gè)視圖控制器的類(lèi)MainViewController, 讓MainViewController繼承于UIViewController, MainViewController.h文件的內(nèi)容如下:
            #import <UIKit/UIKit.h>
            @interface MainViewController : UIViewController
            @end
            2.我們?cè)贛ainViewController.m中進(jìn)行我們的視圖聲明和實(shí)例化,代碼如下:
          #import "MainViewController.h"
          //用延展隱藏我們的組件
          @interface MainViewController ()
          @property (nonatomic, strong) UIView *subView;
          @end
          //-------實(shí)現(xiàn)部分-----------
          @implementation MainViewController
          //主視圖加載后要做的事情
          -(void)viewDidLoad
          {
          //實(shí)例化view并添加到mainView
          self.subView = [[UIView alloc] initWithFrame:CGRectMake(50, 50, 100, 150)];
          self.subView.backgroundColor = [UIColor brownColor];
          [self.view addSubview:self.subView];
          }
          @end
            3.我們需要把我們新建的視圖控制器和我們的窗口關(guān)聯(lián),在AppDelegate.m中實(shí)例化MainViewController并添加到window中,代碼如下:
            - (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];
            //實(shí)例化MainViewController,并添加到window
            MainViewController * mianViewController = [[MainViewController alloc] init];
            [self.window addSubview:mianViewController.view];
            return YES;
            }
            先暫且這么理解著視圖和視圖控制器,隨著以后的深入的學(xué)習(xí)會(huì)隨時(shí)更新和修改博客的。

          posted on 2014-11-21 09:38 順其自然EVO 閱讀(195) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2014年11月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類(lèi)

          隨筆檔案

          文章分類(lèi)

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 大方县| 讷河市| 九龙县| 永安市| 黔江区| 晴隆县| 锡林郭勒盟| 顺义区| 耿马| 漳浦县| 绵竹市| 贵阳市| 连云港市| 浦县| 大荔县| 平定县| 龙井市| 隆回县| 龙门县| 蒙自县| 清涧县| 禄丰县| 巫溪县| 阳信县| 鄂尔多斯市| 全南县| 车致| 循化| 东至县| 屯留县| 凤庆县| 云霄县| 江油市| 杨浦区| 平罗县| 莆田市| 宜城市| 兴和县| 邹平县| 名山县| 桂平市|