UI第一天:UIView及其⼦類

⼀、UIView
iOS概述
iOS是Apple公司的移動操作系統
UI概述
UI(User Interface):⽤戶界⾯,⽤戶能看到的各種各樣的⻚⾯元素。
iOS App = 各種各樣的UI控件 + 業務邏輯和算法.
想要開發出⼀款精美的應⽤程序,需要熟練掌握各種UI控件的⽤ 法。
UIWindow
window是窗⼝,每個app都需要藉助window將內容展現給⽤戶看。
在iOS中,使⽤UIWindow類來表⽰窗⼝,通常⼀個應⽤程序只創建 ⼀個UIWindow對象。
window的主要作⽤是呈現內容給⽤戶,我們不會對window做太多操 作。
self.window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] bounds]];
UIView
view(視圖):代表屏幕上的⼀個矩形區域。
iOS中⽤UIView來表⽰ 視圖 前⾯ppt⾥看到的各種UI控件都屬於view。
不同的控件代表不同種類的view。
iOS中所有能看到的內容都是view或其⼦類。
創建視圖的步驟如下:
1、開闢空間並初始化視圖(初始化時,給出視圖位置和⼤⼩)
2、對視圖做⼀些設置(⽐如:背景顏⾊)
3、將視圖添加到window上進⾏顯⽰
4、釋放視圖對象
UIView *blueView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 120, 100)];
blueView.backgroundColor = [UIColor blueColor];
[self.window addSubview:blueView]; [blueView release];
OS座標系
iOS提供了⽤於佈局的平⾯座標系。左上⾓爲座標系的原點。
座標系不是以像素作爲劃分依據,⽽是以“點”作爲依據。
frame
frame是⼀個結構體,包含2部分內容:origin和size。
origin也是⼀個結構體,包含2部分內容:x和y。
size同樣是⼀個結構體,包含2部分內容:width和height。
frame的origin和size是相對於⽗視圖來說的。
CGRectMake()函數可以幫我們快速構造⼀個CGRect變量。
center
center(中⼼點)也是view重要的屬性。
center是個結構體,包含2個部分:x和y。
center與frame有着密切的聯繫。
center.x = frame.origin.x + frame.size.width/2;
center.y = frame.origin.y + frame.size.height/2;
bounds
bounds(邊界)也是view的重要屬性,⽤於定義⾃⼰的邊界。
它同 frame⼀樣是⼀個CGRect結構體變量。
當⼀個view設置bounds時,會把⾃⼰當成⼀個容器,定義⾃⼰的邊 界⼤⼩ 以及 左上⾓的初始座標。

當⼦視圖添加到此視圖時,會根據bounds指定的原點(0,0)計算 frame,⽽⾮左上⾓。




添加視圖


管理視圖層次


視圖重要屬性


// MRC
// retain相當於strong 一般修飾對象
// assgin相當於weak 一般修飾基本數據類型
 
   
//更改中心點座標
  
// view.center = CGPointMake(200, 100);
   
//更改視圖位置有2種方法一種改frame 一種改中心點
   
   
//bounds 邊界可以控制子視圖的座標系
   
//默認的bounds 就是從(0,0)開始
   
   
//view.bounds = CGRectMake(10, 10, 375, 100);
   
// 改變父視圖的bounds 相當於改變子視圖的座標系(也就是原點座標)
   
//父視圖是不會發生變化只改變子視圖的位置
    //添加一個進一個window的數組裏
NSArray *subview = self.window.subviews;
    UIView *tempview = subview[0];
⼆、UILabel
UILabel(標籤):是顯⽰⽂本的控件。在App中UILabel是出現頻 率最⾼的控件。
UILabel是UIView⼦類,作爲⼦類⼀般是爲了擴充⽗類的功能, UILabel擴展了⽂字顯⽰的功能,UILabel是能顯⽰⽂字的視圖
創建UILabel與創建UIView的步驟很相似。
1、開闢空間並初始化(如果本類有初始化⽅法,使⽤⾃⼰的;否則 使⽤⽗類的)。
2、設置⽂本控制相關的屬性
3、添加到⽗視圖上,⽤以顯⽰
4、釋放
UILabel *userNameLabel = [[UILabel alloc] initWithFrame:CGRectMake(30, 100, 100, 30)];
userNameLabel.text = @"⽤戶名";
[containerView addSubview:userNameLabel];
[userNameLabel release];
UILabel的主要作⽤是顯⽰⼀段⽂本,因此提供了很多與顯⽰⽂本相關 的API

UIView是所有可視化控件的基類。
UILabel是具有特定外觀特定功能的視圖。
UILabel側重於⽂本的呈現。
  // 顯示文本的視圖UILabel
//    //初始化
//    UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(20, 400, 200, 50)];
//    label.backgroundColor = [UIColor redColor];
//    label.text = @"肥鵝肝";
//    // 設置字體大小
//    label.font = [UIFont systemFontOfSize:20];
//    // 獲取系統所有安裝的字體
//    NSArray *fontArray = [UIFont familyNames];
//    NSLog(@"%@",fontArray);
//    // 設置字體大小及字體類型
//    label.font = [UIFont fontWithName:@"Iowan Old Style" size:20];
//    // 多行顯示
//    // 完全顯示 -1 或者 0
//    label.numberOfLines =1;
//    label.lineBreakMode = NSLineBreakByTruncatingMiddle;
//    // 設置陰影顏色
//    label.shadowColor = [UIColor blueColor];
//    // 設置陰影位置
//    label.shadowOffset = CGSizeMake(0, 50);
//    [self.window addSubview:label];
//    [label release];
總結
App靠window來呈現內容,⼀個程序⼀般只創建⼀個window。
App中能看到的元素,都是UIView及其⼦類。
UIView作爲所有可視化控件的BaseClass,提供了許多屬性和⽅法。
顯⽰效果控制(frame、alpha等)、視圖添加和移除(addSubview: 等)、視圖層次調整(bringSubviewToFront:等)等。
UILabel屬於具體的視圖,有⾃⼰的側重點


發佈了33 篇原創文章 · 獲贊 0 · 訪問量 7617
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章