為了便于學(xué)習(xí)初級階段的理解息尺,本篇可能在用詞和概念描述上存在模糊或者不準(zhǔn)確的地方弧蝇,大家可以在今后的學(xué)習(xí)中尋求更加準(zhǔn)確的定義驶鹉。
前言
此次我們需要認(rèn)識一個iOS開發(fā)中的一個重要的類——UIViewController(視圖控制器)谆焊,在iOS開發(fā)中蹲坷,負(fù)責(zé)展示內(nèi)容和響應(yīng)交互的部分被稱作UIView(視圖),而UIViewController正是“包含了UIView的Controller”塞祈,其作用是對視圖的生命周期進行控制金刁。
視圖的生命周期
來到上一篇創(chuàng)建的項目中,打開ViewController.m议薪。
可以看到系統(tǒng)已經(jīng)默認(rèn)生成了一個方法尤蛮。
- (void)viewDidLoad
這個方法正是代表了視圖生命周期的第一個階段的回調(diào),即視圖已加載
在此方法中斯议,我們可以處理一些視圖加載完成之后要做的事产捞。
那么我們先來大概看一下視圖生命周期的主要階段吧
我們使用opt + 鼠標(biāo)左鍵進入UIViewController.h中,可以找到以下聲明:
以上幾個生命周期階段的回調(diào)方法是比較常用的哼御,分別是視圖即將出現(xiàn)坯临,已出現(xiàn),即將消失恋昼,已消失看靠,即將布局子視圖,已布局子視圖液肌。在后面的注釋里衷笋,官方給出了清晰的判定標(biāo)準(zhǔn)。
對視圖生命周期的認(rèn)識今后還會在實戰(zhàn)中加深矩屁,暫時就先了解到這里,接下來讓我們設(shè)置第一個視圖爵赵。
神說吝秕,要有光
在viewDidLoad中寫下
self.view.backgroundColor =[UIColor whiteColor];
運行應(yīng)用,發(fā)現(xiàn)原本漆黑的應(yīng)用界面變成了白色空幻。
這一行中的view代表了ViewController中默認(rèn)包含的一個UIView烁峭,backgroundColor則是指應(yīng)用的背景色,使用opt+左鍵可以看到它的類型為UIColor,因此我們使用
[UIColor whiteColor]
來獲取一個白色的UIColor约郁,跳進whiteColor缩挑,發(fā)現(xiàn)系統(tǒng)已經(jīng)給出了數(shù)個預(yù)設(shè)的顏色
通過以上的操作,大家應(yīng)該意識到了查看定義是非常重要的學(xué)習(xí)方法鬓梅,以后我盡量不會在文章里再重復(fù)這些過程供置,大家平時一定要養(yǎng)成多看定義的習(xí)慣
UILabel
標(biāo)簽是一個很常用的視圖控件,它代表一個可換行的只讀文字區(qū)域绽快。
下面我們通過創(chuàng)建并布局一個UILabel來認(rèn)識它的一些常用屬性芥丧。
UILabel *myLabel = [[UILabel alloc] init];
myLabel.frame = CGRectMake(88, 88, 0, 0);
myLabel.text = @"我的第一個頁面";
myLabel.textColor = [UIColor blackColor];
myLabel.font = [UIFont systemFontOfSize:20];
[myLabel sizeToFit];
[self.view addSubview:myLabel];
相信這幾行代碼里的主要含義大家應(yīng)該一眼就能明白。
我們著重講幾行
myLabel.frame = CGRectMake(88, 88, 0, 0);
frame是UIView的一個屬性坊罢,它代表這個視圖在窗口中的位置和大小续担。
那么不難理解,CGRectMake中的四個參數(shù)分別為橫坐標(biāo)活孩,縱坐標(biāo)物遇,寬度,長度
其中關(guān)于坐標(biāo)的定義是憾儒,以窗口的左上角為原點询兴,向右和向下為正方向。
坐標(biāo)的單位為pt(point)航夺,并不是一個像素蕉朵,關(guān)于這一點這里先不詳細(xì)講。
通過
[UIScreen mainScreen].bounds
這個方法我們可以獲取屏幕的長寬阳掐,以iPhone 6為例始衅,寬高分別為375,667。
這里我們似乎沒有設(shè)置label的寬高缭保,因為label的尺寸會隨字體大小和字?jǐn)?shù)發(fā)生變化汛闸,這里不需要我們手動計算它的尺寸,只需在設(shè)置內(nèi)容后調(diào)用這個方法艺骂。
[myLabel sizeToFit];
然后
[self.view addSubview:myLabel];
代表將myLabel添加為view的子視圖诸老,這樣我們就能在界面上看到它了。
運行一下試試看吧钳恕。