UIView 中常見的方法總結

addSubview: 
添加一個子視圖到接收者並讓它在最上面顯示出來。 
- (void)addSubview:(UIView *)view 
討論 
這方法同樣設置了接收者爲下一個視圖響應對象。接收者保留視圖。如果你使用removeFromSuperview方法用來把視圖移除他的顯示列表,那麼視圖將會被釋放。如果你想要在視圖移除顯示列表後保留並使用這個視圖(如果,舉個例子,你想要交換一些視圖的位置。),你不許保留那個視圖在他調用removeFromSuperview前。 

bringSubviewToFront: 
把指定的子視圖移動到頂層 
- (void)bringSubviewToFront:(UIView *)view 
參數 
view 
需要移到頂層的視圖 

convertPoint:fromView: 
把一個點從一個座標系轉換到接收者的座標系 
- (CGPoint)convertPoint:(CGPoint)point fromView:(UIView *)view 
參數 
point 
一個視圖中座標系上的點 
view 
一個視圖包含了點和他自身座標系。如果是圖是nil,那麼這個方法將嘗試轉換基於窗口的座標系。否則視圖和那個接收者必須屬於同一個UIWindow對象。 
返回值 
一個轉換到接收者座標系的點 

convertPoint:toView: 
轉換一個點從接收者座標系到給定的視圖座標系 
- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view 
參數 
point 
一個在調用者座標系中的點 
view 
一個包含了需要被轉換的點的視圖。如果視圖是nil,那麼這個方法將會轉換成基於窗口的座標。否則視圖和接收者都要屬於同一個UIWindow對象。 
返回值 
基於視圖的座標系轉換過的點 

convertRect:fromView: 
轉換一個矩形從其他視圖座標系到接收者座標系。 
- (CGRect)convertRect:(CGRect)rect fromView:(UIView *)view 
參數 
rect 
一個在視圖座標系中的矩形 
view 
一個視圖內部有矩形在他的座標系中。如果視圖是nil,那麼這個方法將會基於窗口來轉換。否則視圖和接收者必須都屬於同一個UIWindow對象 
返回值 
The converted rectangle 
轉換過的矩形 

convertRect:toView: 
轉換接收者座標系中的矩形到其他視圖 
- (CGRect)convertRect:(CGRect)rect toView:(UIView *)view 
參數 
rect 
一個在接收者座標系中的矩形 
view 
要轉換過去的目標視圖對象。如果這個是視圖是nil,這個方法將會基於窗口座標系來轉換。否者視圖和接收者必須屬於同一個UIwindow對象 
返回值 
一個轉換過的矩形 

didAddSubview: 
告訴視圖當子視圖已經添加 
- (void)didAddSubview:(UIView *)subview 
參數 
subview 
被添加做子視圖的視圖對象 
討論 
被子類重寫用來執行額外的命令當子視圖添加到接收者。這個方法被addSubview調用 

didMoveToSuperview 
通知接收者父視圖已經改變(nil是允許的) 
- (void)didMoveToSuperview 
討論 
默認不做任何事情;子類可以重寫這方法來作爲特定的實現 

didMoveToWindow 
通知接收者它一斤給添加到窗口中 
- (void)didMoveToWindow 
討論 
默認實現不做任何事情;子類可以重寫這個方法來做特殊的實現 
窗口的屬性有可能是nil當這個方法調用的時候,這表明接收者並不屬於當然任何一個窗口。這個只發生在接收者從它的父視圖上移除或者接收者添加到父視圖中而不是添加到window中。重寫這個方法可以用來選擇忽略一些他們不關心的對象 

drawRect: 
在接收者視圖中繪製矩形 
- (void)drawRect:(CGRect)rect 
參數 
rect 
一個定義的需要繪製的矩形 
討論 
子類重寫這個方法如果他們確實要繪製他們自定義的視圖。如果子類是其他視圖的容器那麼它不需要重寫這個方法。默認的實現不做任何事情。如果你自定義的視圖是一個UIView子類,你不需要去調用它的父類實現。注意如果它的父類實現繪製並且不透明屬性爲YES那麼每一個子類都需要填充矩形。 
當這個方法被調用,接收者可以假定他的幀在座標上已經轉換,邊界矩形已經應用;所有他要做的就是繪製自定義的方法。使用UIGraphicsGetCurrentContext方法去獲取當前圖形內容用來繪製,座標原點在左上角。不要保留圖片內容當他可以被drawRect:這個方法調用。 
exchangeSubviewAtIndex:withSubviewAtIndex: 
交換接收者的子視圖和給定的索引視圖 
- (void)exchangeSubviewAtIndex:(NSInteger)index1 withSubviewAtIndex:(NSInteger)index2 
參數 
index1 
一個需要取代索引2的子視圖 
index2 
一個需要取代索引1的子視圖 

hitTest:withEvent: 
返回接收者視圖層次中最遠的派生(包括它本身)的特定的點。 
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event 
參數 
point 
接收者座標系中的點 
event 
觸發這個方法的事件或者是如果這個方法被預調用就返回nil 
返回值 
一個視圖對象最遠的派生點。如果這個點位於接收者之外就返回nil 
討論 
這個方法貫穿視圖的層次發送pointInside:withEvent: 消息到每一個子視圖用來決定那個子視圖需要接收觸摸事件。如果pointInside:withEvent: 返回YES,那麼視圖的層次全部貫穿;否則視圖層次的分支是被否定的。你不太需要調用這個方法,但是你需要重寫它用來隱藏子視圖的觸摸事件。 
如果視圖是隱藏的,禁止用戶交互的或者透明值小於01那麼這個方法不可用 

initWithFrame: 
初始化並返回一個新的擁有特定幀矩形的視圖對象 
- (id)initWithFrame:(CGRect)aRect 
參數 
aRect 
一個幀矩形用來創建視圖對象。原始的幀在它的父視圖的座標系中。設置這個屬性用來改變中心和邊界屬性。 
返回值 
一個初始化的視圖對象,如果沒有被創建那就返回nil 
討論 
一個新的視圖對象必須添加到視圖鏈中才能使用。這個方法爲UIView類指出初始化對象。 

insertSubview:aboveSubview: 
在視圖層次頂層插入一個視圖 
- (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview 
參數 
view 
一個插入被用來放在頂層的視圖。它將會從父視圖中移除如果它不是相鄰視圖 
siblingSubview 
一個相鄰視圖用來放在插入視圖的後面 

insertSubview:atIndex: 
插入視圖到指定的索引 
- (void)insertSubview:(UIView *)view atIndex:(NSInteger)index 
參數 
view 
插入的視圖,這個值不能是nil 
index 
子視圖索引從0開始並且不能大於子視圖的數量 

insertSubview:belowSubview: 
插入視圖到顯示鏈的底層 
- (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview 
參數 
view 
一個需要插入到其他視圖底部的視圖。它將從它的父視圖移除如果它不與相鄰視圖的相鄰 
siblingSubview 
一個相鄰視圖將會在插入的視圖之上 

isDescendantOfView: 
返回一個布爾值指出接收者是否是給定視圖的子視圖或者指向那個視圖 
- (BOOL)isDescendantOfView:(UIView *)view 
參數 
view 
一個視圖用來測試子視圖在視圖層次中的關係 
返回值 
如果接收者是視圖的子視圖就返回YES,或者視圖就是接收者;否則就是NO 

layoutIfNeeded 
排列子視圖如果需要的話 
- (void)layoutIfNeeded 
討論 
使用這個方法來關注子視圖的排列在繪製前 

layoutSubviews 
排列子視圖 
- (void)layoutSubviews 
討論 
當layoutIfNeeded被調用是子類用來重寫這個方法來排列子視圖。默認實現這個方法不做任何事情。 

pointInside:withEvent: 
返回一個布爾值指出接收者是否包含特定的點 
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event 
參數 
point 
一個在接收者座標系內的點 
event 
這個方法的目標事件或者如果這個方法被預調用返回nil 
返回值 
如果點在接收者邊界內返回YES,否則返回NO 

removeFromSuperview 
把接收者從它的父視圖或者窗口移除,並在響應鏈中移除。 
- (void)removeFromSuperview 
討論 
接收者同時釋放;如果你計劃重用它,要確定在發送消息前保持它並在添加到其他UIView對象作爲子視圖後移除。 不要在顯示的時候調用 

sendSubviewToBack: 
移動指定的子視圖到它相鄰視圖的後面 
- (void)sendSubviewToBack:(UIView *)view 
參數 
view 
一個子視圖用來移動到它後面去 

setNeedsDisplay 
控制接收者的邊界矩形被標記爲需要顯示 
-(void)setNeedsDisplay 
討論 
默認情況下,視圖幾何圖形的改變自動重繪而不需要調用drawRect:方法。因此,你需要去請求視圖重繪當視圖的數據或者狀態改變的時候。從這個意義上來說,向視圖發送setNeedsDisplay消息。任何UIView對象標記爲需要顯示後將會在應用程序循環中自動重新繪製。 

setNeedsDisplayInRect: 
標記接收者中的特定的矩形區域爲需要顯示,或者添加接收者現有的其他無效區域 
- (void)setNeedsDisplayInRect:(CGRect)invalidRect 
參數 
invalidRect 
標記接收者的矩形區域爲無效的;他需要在接收者座標系中定義。 
討論 
默認情況下,視圖幾何圖形的改變自動重繪而不需要調用drawRect:方法。因此,你需要去請求視圖重繪當視圖的數據或者狀態改變的時候。使用這個方法或者用setNeedsDisplay方法來標記視圖需要顯示的地方。 

setNeedsLayout 
設置當子視圖顯示的時候需要重新排列 
- (void)setNeedsLayout 
討論 
如果你調用這個方法在下一個顯示方法之間,那麼layoutIfNeeded排列子視圖;否則將不會做任何事情 

sizeThatFits: 
計算並返回一個最好的適應接收者子視圖的大小 
- (CGSize)sizeThatFits:(CGSize)size 
參數 
size 
接收者首選的尺寸 
返回值 
一個新的大小用來適應接收者子視圖 
討論 
默認的實現返回大小參數 子類重寫這個方法用來返回特定視圖的大小。舉個粒子,UISwitch返回一個修正過的大小,UIImageView返回圖片的大小 這個方法並沒有改變接收者的大小 

sizeToFit 
調整大小並移動接收者視圖大小所以他包含了他的子視圖 
- (void)sizeToFit 
討論 
這個方法使用sizeThatFits: 方法來決定大小。子類需要重寫sizeThatFits:用來計算正確的尺寸大小。默認的實現不做任何事情。 

viewWithTag: 
返回視圖的特定的標籤 
- (UIView *)viewWithTag:(NSInteger)tag 
參數 
tag 
一個用來在視圖中搜索的標籤 
返回值 
視圖在接收者層次中符合的標籤,接收者也包含在搜索中。 

willMoveToSuperview: 
通知接收者他的父視圖將會改變到特定的父視圖(也有可能是nil) 
- (void)willMoveToSuperview:(UIView *)newSuperview 
參數 
newSuperview 
新的視圖對象將會是接收者新的父視圖 
討論 
子類可以重寫這個方法來做一些特定的行爲 

willMoveToWindow: 
通知接收者它已經被添加到特定的窗口對戲那個的視圖層次中(也有可能是nil) 
- (void)willMoveToWindow:(UIWindow *)newWindow 
參數 
newWindow 
一個窗口對象將會成爲接收者新的視圖層次的根視圖 
討論 
子類可以重寫這個方法來提供一些特定的必要實現 

willRemoveSubview: 
由子類重寫用來在子視圖從接收者視圖中移除前執行一些特定的方法。 
- (void)willRemoveSubview:(UIView *)subview 
參數 
subview 
子視圖將會被移除 
討論 
這個方法被調用當子視圖接收到removeFromSuperview消息或者子視圖從接收者視圖層次中移除因爲它要被添加到其他視圖了
發佈了59 篇原創文章 · 獲贊 40 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章