UIView中常用的方法
UIView 中常見(jiàn)的方法總結(jié)
addSubview:?
添加一個(gè)子視圖到接收者并讓它在最上面顯示出來(lái)。?
- (void)addSubview:(UIView *)view?
討論?
這方法同樣設(shè)置了接收者為下一個(gè)視圖響應(yīng)對(duì)象。接收者保留視圖。如果你使用removeFromSuperview方法用來(lái)把視圖移除他的顯示列表,那么視圖將會(huì)被釋放。如果你想要在視圖移除顯示列表後保留并使用這個(gè)視圖(如果,舉個(gè)例子,你想要交換一些視圖的位置。),你不許保留那個(gè)視圖在他調(diào)用removeFromSuperview前。?
bringSubviewToFront:?
把指定的子視圖移動(dòng)到頂層?
- (void)bringSubviewToFront:(UIView *)view?
參數(shù)?
view?
需要移到頂層的視圖?
convertPoint:fromView:?
把一個(gè)點(diǎn)從一個(gè)坐標(biāo)系轉(zhuǎn)換到接收者的坐標(biāo)系?
- (CGPoint)convertPoint:(CGPoint)point fromView:(UIView *)view?
參數(shù)?
point?
一個(gè)視圖中坐標(biāo)系上的點(diǎn)?
view?
一個(gè)視圖包含了點(diǎn)和他自身坐標(biāo)系。如果是圖是nil,那么這個(gè)方法將嘗試轉(zhuǎn)換基于窗口的坐標(biāo)系。否則視圖和那個(gè)接收者必須屬于同一個(gè)UIWindow對(duì)象。?
返回值?
一個(gè)轉(zhuǎn)換到接收者坐標(biāo)系的點(diǎn)?
convertPoint:toView:?
轉(zhuǎn)換一個(gè)點(diǎn)從接收者坐標(biāo)系到給定的視圖坐標(biāo)系?
- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view?
參數(shù)?
point?
一個(gè)在調(diào)用者坐標(biāo)系中的點(diǎn)?
view?
一個(gè)包含了需要被轉(zhuǎn)換的點(diǎn)的視圖。如果視圖是nil,那么這個(gè)方法將會(huì)轉(zhuǎn)換成基于窗口的坐標(biāo)。否則視圖和接收者都要屬于同一個(gè)UIWindow對(duì)象。?
返回值?
基于視圖的坐標(biāo)系轉(zhuǎn)換過(guò)的點(diǎn)?
convertRect:fromView:?
轉(zhuǎn)換一個(gè)矩形從其他視圖坐標(biāo)系到接收者坐標(biāo)系。?
- (CGRect)convertRect:(CGRect)rect fromView:(UIView *)view?
參數(shù)?
rect?
一個(gè)在視圖坐標(biāo)系中的矩形?
view?
一個(gè)視圖內(nèi)部有矩形在他的坐標(biāo)系中。如果視圖是nil,那么這個(gè)方法將會(huì)基于窗口來(lái)轉(zhuǎn)換。否則視圖和接收者必須都屬于同一個(gè)UIWindow對(duì)象?
返回值?
The converted rectangle?
轉(zhuǎn)換過(guò)的矩形?
convertRect:toView:?
轉(zhuǎn)換接收者坐標(biāo)系中的矩形到其他視圖?
- (CGRect)convertRect:(CGRect)rect toView:(UIView *)view?
參數(shù)?
rect?
一個(gè)在接收者坐標(biāo)系中的矩形?
view?
要轉(zhuǎn)換過(guò)去的目標(biāo)視圖對(duì)象。如果這個(gè)是視圖是nil,這個(gè)方法將會(huì)基于窗口坐標(biāo)系來(lái)轉(zhuǎn)換。否者視圖和接收者必須屬于同一個(gè)UIwindow對(duì)象?
返回值?
一個(gè)轉(zhuǎn)換過(guò)的矩形?
didAddSubview:?
告訴視圖當(dāng)子視圖已經(jīng)添加?
- (void)didAddSubview:(UIView *)subview?
參數(shù)?
subview?
被添加做子視圖的視圖對(duì)象?
討論?
被子類(lèi)重寫(xiě)用來(lái)執(zhí)行額外的命令當(dāng)子視圖添加到接收者。這個(gè)方法被addSubview調(diào)用?
didMoveToSuperview?
通知接收者父視圖已經(jīng)改變(nil是允許的)?
- (void)didMoveToSuperview?
討論?
默認(rèn)不做任何事情;子類(lèi)可以重寫(xiě)這方法來(lái)作為特定的實(shí)現(xiàn)?
didMoveToWindow?
通知接收者它一斤給添加到窗口中?
- (void)didMoveToWindow?
討論?
默認(rèn)實(shí)現(xiàn)不做任何事情;子類(lèi)可以重寫(xiě)這個(gè)方法來(lái)做特殊的實(shí)現(xiàn)?
窗口的屬性有可能是nil當(dāng)這個(gè)方法調(diào)用的時(shí)候,這表明接收者并不屬于當(dāng)然任何一個(gè)窗口。這個(gè)只發(fā)生在接收者從它的父視圖上移除或者接收者添加到父視圖中而不是添加到window中。重寫(xiě)這個(gè)方法可以用來(lái)選擇忽略一些他們不關(guān)心的對(duì)象?
drawRect:?
在接收者視圖中繪制矩形?
- (void)drawRect:(CGRect)rect?
參數(shù)?
rect?
一個(gè)定義的需要繪制的矩形?
討論?
子類(lèi)重寫(xiě)這個(gè)方法如果他們確實(shí)要繪制他們自定義的視圖。如果子類(lèi)是其他視圖的容器那么它不需要重寫(xiě)這個(gè)方法。默認(rèn)的實(shí)現(xiàn)不做任何事情。如果你自定義的視圖是一個(gè)UIView子類(lèi),你不需要去調(diào)用它的父類(lèi)實(shí)現(xiàn)。注意如果它的父類(lèi)實(shí)現(xiàn)繪制并且不透明屬性為YES那么每一個(gè)子類(lèi)都需要填充矩形。?
當(dāng)這個(gè)方法被調(diào)用,接收者可以假定他的幀在坐標(biāo)上已經(jīng)轉(zhuǎn)換,邊界矩形已經(jīng)應(yīng)用;所有他要做的就是繪制自定義的方法。使用UIGraphicsGetCurrentContext方法去獲取當(dāng)前圖形內(nèi)容用來(lái)繪制,坐標(biāo)原點(diǎn)在左上角。不要保留圖片內(nèi)容當(dāng)他可以被drawRect:這個(gè)方法調(diào)用。?
exchangeSubviewAtIndex:withSubviewAtIndex:?
交換接收者的子視圖和給定的索引視圖?
- (void)exchangeSubviewAtIndex:(NSInteger)index1 withSubviewAtIndex:(NSInteger)index2?
參數(shù)?
index1?
一個(gè)需要取代索引2的子視圖?
index2?
一個(gè)需要取代索引1的子視圖?
hitTest:withEvent:?
返回接收者視圖層次中最遠(yuǎn)的派生(包括它本身)的特定的點(diǎn)。?
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event?
參數(shù)?
point?
接收者坐標(biāo)系中的點(diǎn)?
event?
觸發(fā)這個(gè)方法的事件或者是如果這個(gè)方法被預(yù)調(diào)用就返回nil?
返回值?
一個(gè)視圖對(duì)象最遠(yuǎn)的派生點(diǎn)。如果這個(gè)點(diǎn)位于接收者之外就返回nil?
討論?
這個(gè)方法貫穿視圖的層次發(fā)送pointInside:withEvent: 消息到每一個(gè)子視圖用來(lái)決定那個(gè)子視圖需要接收觸摸事件。如果pointInside:withEvent: 返回YES,那么視圖的層次全部貫穿;否則視圖層次的分支是被否定的。你不太需要調(diào)用這個(gè)方法,但是你需要重寫(xiě)它用來(lái)隱藏子視圖的觸摸事件。?
如果視圖是隱藏的,禁止用戶交互的或者透明值小于01那么這個(gè)方法不可用?
initWithFrame:?
初始化并返回一個(gè)新的擁有特定幀矩形的視圖對(duì)象?
- (id)initWithFrame:(CGRect)aRect?
參數(shù)?
aRect?
一個(gè)幀矩形用來(lái)創(chuàng)建視圖對(duì)象。原始的幀在它的父視圖的坐標(biāo)系中。設(shè)置這個(gè)屬性用來(lái)改變中心和邊界屬性。?
返回值?
一個(gè)初始化的視圖對(duì)象,如果沒(méi)有被創(chuàng)建那就返回nil?
討論?
一個(gè)新的視圖對(duì)象必須添加到視圖鏈中才能使用。這個(gè)方法為UIView類(lèi)指出初始化對(duì)象。?
insertSubview:aboveSubview:?
在視圖層次頂層插入一個(gè)視圖?
- (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview?
參數(shù)?
view?
一個(gè)插入被用來(lái)放在頂層的視圖。它將會(huì)從父視圖中移除如果它不是相鄰視圖?
siblingSubview?
一個(gè)相鄰視圖用來(lái)放在插入視圖的後面?
insertSubview:atIndex:?
插入視圖到指定的索引?
- (void)insertSubview:(UIView *)view atIndex:(NSInteger)index?
參數(shù)?
view?
插入的視圖,這個(gè)值不能是nil?
index?
子視圖索引從0開(kāi)始并且不能大于子視圖的數(shù)量?
insertSubview:belowSubview:?
插入視圖到顯示鏈的底層?
- (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview?
參數(shù)?
view?
一個(gè)需要插入到其他視圖底部的視圖。它將從它的父視圖移除如果它不與相鄰視圖的相鄰?
siblingSubview?
一個(gè)相鄰視圖將會(huì)在插入的視圖之上?
isDescendantOfView:?
返回一個(gè)布爾值指出接收者是否是給定視圖的子視圖或者指向那個(gè)視圖?
- (BOOL)isDescendantOfView:(UIView *)view?
參數(shù)?
view?
一個(gè)視圖用來(lái)測(cè)試子視圖在視圖層次中的關(guān)系?
返回值?
如果接收者是視圖的子視圖就返回YES,或者視圖就是接收者;否則就是NO?
layoutIfNeeded?
排列子視圖如果需要的話?
- (void)layoutIfNeeded?
討論?
使用這個(gè)方法來(lái)關(guān)注子視圖的排列在繪制前?
layoutSubviews?
排列子視圖?
- (void)layoutSubviews?
討論?
當(dāng)layoutIfNeeded被調(diào)用是子類(lèi)用來(lái)重寫(xiě)這個(gè)方法來(lái)排列子視圖。默認(rèn)實(shí)現(xiàn)這個(gè)方法不做任何事情。?
pointInside:withEvent:?
返回一個(gè)布爾值指出接收者是否包含特定的點(diǎn)?
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event?
參數(shù)?
point?
一個(gè)在接收者坐標(biāo)系內(nèi)的點(diǎn)?
event?
這個(gè)方法的目標(biāo)事件或者如果這個(gè)方法被預(yù)調(diào)用返回nil?
返回值?
如果點(diǎn)在接收者邊界內(nèi)返回YES,否則返回NO?
removeFromSuperview?
把接收者從它的父視圖或者窗口移除,并在響應(yīng)鏈中移除。?
- (void)removeFromSuperview?
討論?
接收者同時(shí)釋放;如果你計(jì)劃重用它,要確定在發(fā)送消息前保持它并在添加到其他UIView對(duì)象作為子視圖後移除。 不要在顯示的時(shí)候調(diào)用?
sendSubviewToBack:?
移動(dòng)指定的子視圖到它相鄰視圖的後面?
- (void)sendSubviewToBack:(UIView *)view?
參數(shù)?
view?
一個(gè)子視圖用來(lái)移動(dòng)到它後面去?
setNeedsDisplay?
控制接收者的邊界矩形被標(biāo)記為需要顯示?
-(void)setNeedsDisplay?
討論?
默認(rèn)情況下,視圖幾何圖形的改變自動(dòng)重繪而不需要調(diào)用drawRect:方法。因此,你需要去請(qǐng)求視圖重繪當(dāng)視圖的數(shù)據(jù)或者狀態(tài)改變的時(shí)候。從這個(gè)意義上來(lái)說(shuō),向視圖發(fā)送setNeedsDisplay消息。任何UIView對(duì)象標(biāo)記為需要顯示後將會(huì)在應(yīng)用程序循環(huán)中自動(dòng)重新繪制。?
setNeedsDisplayInRect:?
標(biāo)記接收者中的特定的矩形區(qū)域?yàn)樾枰@示,或者添加接收者現(xiàn)有的其他無(wú)效區(qū)域?
- (void)setNeedsDisplayInRect:(CGRect)invalidRect?
參數(shù)?
invalidRect?
標(biāo)記接收者的矩形區(qū)域?yàn)闊o(wú)效的;他需要在接收者坐標(biāo)系中定義。?
討論?
默認(rèn)情況下,視圖幾何圖形的改變自動(dòng)重繪而不需要調(diào)用drawRect:方法。因此,你需要去請(qǐng)求視圖重繪當(dāng)視圖的數(shù)據(jù)或者狀態(tài)改變的時(shí)候。使用這個(gè)方法或者用setNeedsDisplay方法來(lái)標(biāo)記視圖需要顯示的地方。?
setNeedsLayout?
設(shè)置當(dāng)子視圖顯示的時(shí)候需要重新排列?
- (void)setNeedsLayout?
討論?
如果你調(diào)用這個(gè)方法在下一個(gè)顯示方法之間,那么layoutIfNeeded排列子視圖;否則將不會(huì)做任何事情?
sizeThatFits:?
計(jì)算并返回一個(gè)最好的適應(yīng)接收者子視圖的大小?
- (CGSize)sizeThatFits:(CGSize)size?
參數(shù)?
size?
接收者首選的尺寸?
返回值?
一個(gè)新的大小用來(lái)適應(yīng)接收者子視圖?
討論?
默認(rèn)的實(shí)現(xiàn)返回大小參數(shù) 子類(lèi)重寫(xiě)這個(gè)方法用來(lái)返回特定視圖的大小。舉個(gè)粒子,UISwitch返回一個(gè)修正過(guò)的大小,UIImageView返回圖片的大小 這個(gè)方法并沒(méi)有改變接收者的大小?
sizeToFit?
調(diào)整大小并移動(dòng)接收者視圖大小所以他包含了他的子視圖?
- (void)sizeToFit?
討論?
這個(gè)方法使用sizeThatFits: 方法來(lái)決定大小。子類(lèi)需要重寫(xiě)sizeThatFits:用來(lái)計(jì)算正確的尺寸大小。默認(rèn)的實(shí)現(xiàn)不做任何事情。?
viewWithTag:?
返回視圖的特定的標(biāo)簽?
- (UIView *)viewWithTag:(NSInteger)tag?
參數(shù)?
tag?
一個(gè)用來(lái)在視圖中搜索的標(biāo)簽?
返回值?
視圖在接收者層次中符合的標(biāo)簽,接收者也包含在搜索中。?
willMoveToSuperview:?
通知接收者他的父視圖將會(huì)改變到特定的父視圖(也有可能是nil)?
- (void)willMoveToSuperview:(UIView *)newSuperview?
參數(shù)?
newSuperview?
新的視圖對(duì)象將會(huì)是接收者新的父視圖?
討論?
子類(lèi)可以重寫(xiě)這個(gè)方法來(lái)做一些特定的行為?
willMoveToWindow:?
通知接收者它已經(jīng)被添加到特定的窗口對(duì)戲那個(gè)的視圖層次中(也有可能是nil)?
- (void)willMoveToWindow:(UIWindow *)newWindow?
參數(shù)?
newWindow?
一個(gè)窗口對(duì)象將會(huì)成為接收者新的視圖層次的根視圖?
討論?
子類(lèi)可以重寫(xiě)這個(gè)方法來(lái)提供一些特定的必要實(shí)現(xiàn)?
willRemoveSubview:?
由子類(lèi)重寫(xiě)用來(lái)在子視圖從接收者視圖中移除前執(zhí)行一些特定的方法。?
- (void)willRemoveSubview:(UIView *)subview?
參數(shù)?
subview?
子視圖將會(huì)被移除?
討論?
這個(gè)方法被調(diào)用當(dāng)子視圖接收到removeFromSuperview消息或者子視圖從接收者視圖層次中移除因?yàn)樗惶砑拥狡渌晥D了
?
轉(zhuǎn)載于:https://www.cnblogs.com/hsxblog/p/4982324.html
總結(jié)
以上是生活随笔為你收集整理的UIView中常用的方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Ajax:一种网页开发技术(Asynch
- 下一篇: BFS HDOJ 2102 A计划