view的層次結(jié)構(gòu)
UIScreen
這個屬性我們直接與其打交道的機(jī)會較少,介紹幾個可能用到的方法和屬性。
- +mainScreen拿到當(dāng)前設(shè)備的屏幕大小
-
multiple screens外接屏幕會用到
multiple screens.png - .scale操縱的點所對應(yīng)屏幕的像素
- .coordinateSpace坐標(biāo)隨著屏幕轉(zhuǎn)動等改變
-
.fixedCoordinateSpace坐標(biāo)不變
下面這個是比較方便的截圖方法,返回一個UIView。
實用截圖方法.png
UIWindow
-
-makeVisibleAndKey,當(dāng)前顯示的關(guān)鍵window,響應(yīng)用戶的window
新建關(guān)鍵window.png - 遮掩任務(wù)欄的方法,在
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions設(shè)置window.windowlevel屬性值
window小技巧.png
UIView
Clipping效果
當(dāng)view的superView.clipsToBounds屬性為YES時,它在superView外面的部分會被裁掉,效果如圖:

剪切屬性效果圖.png
view的基本操縱方法

view-CRUD.png
view的重要屬性
- .frame、.bounds、.center、.transform(控制平移、旋轉(zhuǎn)、縮放等屬性,提一下,在這個view中其他子view或者行為是在transfrom發(fā)生之后的視圖里繪制的。)
- -resizeToFit方法,使view的大小根據(jù)它自己的內(nèi)容調(diào)整
- .alpha,該屬性表明view的半透明程度(0.0~1.0),為0時完全透明也不響應(yīng)事件;.opaque(BOOL),為NO時是不透明的,如果alpha值不為1,opaque的值也不能為YES,注意邏輯關(guān)系。
- . maskView,這個屬性接收一個UIView對象,這個對象作為一個模板,如果該對象.alpha為不透明的,會把當(dāng)前view裁剪;透明的就直接顯示原view;半透明,它們顏色會混合。
- .tag,每個view可以設(shè)置一個tag屬性,為整數(shù),我們可以通過viewWithTag的方法便捷訪問該view。(不推薦使用,影響程序的可讀性)
- .tintColor,用來調(diào)色,當(dāng)這個屬性被設(shè)置后,所有在該view上的子view沿用tintColor的調(diào)色
-
UIAppearance
UIAppearance.png
事件處理
事件
什么是事件?觸摸、搖動、線控等,這些對設(shè)備發(fā)出的操控信號我們稱之為事件。

事件分發(fā)過程.png
NSRunLoop
監(jiān)聽事件源,包括系統(tǒng)的、custom和計時器的,然后接收系統(tǒng)touchEvent對象,通過主線程,包裝成UIEvent的對象發(fā)送給當(dāng)前程序,再到當(dāng)前keyWindow,最后是具體響應(yīng)這些事件的對象UIResponder

NSRunLoop.png
UIResponder
它是UIWindow、UIViewController、UIView的父類,為子類提供以下接口

UIResponder.png
Responder有.nextResponder屬性,指向下一個Responder,然后對于First Responder,有特別的一些方法

First Responder.png
分別是判斷是不是第一個Responder,可不可以成為第一個Responder,成為第一個Responder,取消第一個Responder。




