您好,登錄后才能下訂單哦!
UIKit框架
什么是框架?
簡單來說,就是其他攻城獅開發完成的代碼,包括庫文件、頭文件等,這些文件中的API我們可以拿過來使用
UIKit框架是干什么的?
提供創建基于觸摸用戶界面的類
包括:屏幕上的繪制機制、捕捉事件、管理組織復雜的UI元素
UIKit中最重要的兩個類?
1)UIView:所有可以看到的組件/控件/視圖的父類
如:UIButton按鈕、UILabel標簽、UITextField輸入框、UIImageView圖片視圖等
2)UIViewController:所有控制器的父類,負責管理一個頁面
如:UIViewController基本頁面、UITableViewController表格視圖頁面等
這兩個父類都繼承自UIResponder,稱作響應者(以后介紹)
UIResponder繼承自NSObject
控制器的基本使用
在MVC設計模式中,控制器負責視圖與模型數據的關聯,完成頁面的邏輯功能
UIViewController中包含一個非常重要的屬性:頁面中的視圖
@property(nonatomic, retain) UIView *view
代碼創建控制器:
UIViewController * vc = [[UIViewController alloc] init];
控制器對象vc,即一個App中的頁面,包含一個白色的空白view
設置App的初始頁面(空模板下):
在AppDelegate文件中找到以下方法
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
在注釋位置添加代碼:
創建控制器對象,并設置其view的背景顏色
設置window對象的根控制器(初始頁面)為新建的控制器
詳細解釋以下 空項目啟動 的代碼過程:
1)創建一個UIWindow對象,其大小為當前屏幕的大小
2)創建一個控制器
3)設置window對象的根控制器(初始頁面)
4)設置window對象為key window 并顯示
什么是key window?
即主窗口,同一時刻只有一個窗口是主窗口
主窗口能夠接收各種事件,如觸摸事件、運動事件、鍵盤事件等。
UIWindow的父類是UIView
控制器子類
對于UIKit中的使用,一是拿過來直接使用,二是實現子類
實現子類的好處是:將操作封裝(高內聚低耦合)
控制器子類:
如UIViewController子類AMViewController
控制器中的幾個應重寫方法:
init方法:控制器對象被創建后初始化時的調用
該方法中應當先調用父類方法
通常在該方法中添加與視圖無關的操作
viewDidLoad方法:控制器對象管理的view被加載時調用
該方法中應當先調用父類方法
通常在該方法中添加與視圖相關的操作
- (void) viewDidLoad { [super ViewDidLoad]; // Do any additional setup after loading the view. }
UIView的基本屬性
//背景顏色 @property(nonatomic, copy) UIColor *backgroundColor //透明度 @property(nonatomic) CGFloat alpha //視圖對象的ID @property(nonatomic) NSInteger tag //是否隱藏 @property(nonatomic, getter=isHidden) BOOL hidden //所在window @property(nonatomic, readonly) UIWindow *window
UIView的子視圖
UIView是容器對象:
每一個UIView都是一個容器,能容納其他UIView。
容納其他UIView的UIView我們稱之為父控件,被容納的UIView我們稱之為子控件。
子控件的存在依賴于父控件的存在,子控件的位置等屬性是以父控件作為基準的。
相關屬性:
@property(nonatomic, readonly) UIView *superview @property(nonatomic, readonly, copy) NSArray *subviews
添加子視圖:
subview在顯示到屏幕上時,是位于superview上層的 ,添加的方法:
- (void)addSubview:(UIView *)view
同一個view的subview是按照加入的順序顯示對應層的,越晚加入的subview顯示在越上層,反之也是如此
用superview可以直接管理subview的層 。相關方法:
- (void)insertSubview:(UIView *)view atIndex:(NSInteger)index - (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview - (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview - (void)bringSubviewToFront:(UIView *)view - (void)sendSubviewToBack:(UIView *)view - (void)removeFromSuperview - (UIView *)viewWithTag:(NSInteger)tag
子視圖的位置及尺寸:
UIView對象包含以下與位置及尺寸相關的屬性:
@property(nonatomic) CGRect frame // frame屬性(以父視圖為坐標原點) @property(nonatomic) CGRect bounds // bounds屬性(以自身為坐標原點) @property(nonatomic) CGPoint center // center屬性(以俯視圖為坐標原點) @property(nonatomic) CGAffineTransform transform // 形變屬性
視圖的坐標系:
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。