UIView中常見的方法總結(jié)

addSubview:

添加一個子視圖到接收者并讓它在最上面顯示出來。

- (void)addSubview:(UIView *)view

討論

這方法同樣設(shè)置了接收者為下一個視圖響應(yīng)對象椎镣。接收者保留視圖。如果你使用removeFromSuperview方法用來把視圖移除他的顯示列表,那么視圖將會被釋放。如果你想要在視圖移除顯示列表後保留并使用這個視圖(如果况脆,舉個例子,你想要交換一些視圖的位置批糟。)格了,你不許保留那個視圖在他調(diào)用removeFromSuperview前。

bringSubviewToFront:

把指定的子視圖移動到頂層

- (void)bringSubviewToFront:(UIView *)view

參數(shù)

view

需要移到頂層的視圖

convertPoint:fromView:

把一個點(diǎn)從一個坐標(biāo)系轉(zhuǎn)換到接收者的坐標(biāo)系

- (CGPoint)convertPoint:(CGPoint)point fromView:(UIView*)view

參數(shù)

point

一個視圖中坐標(biāo)系上的點(diǎn)

view

一個視圖包含了點(diǎn)和他自身坐標(biāo)系徽鼎。如果是圖是nil盛末,那么這個方法將嘗試轉(zhuǎn)換基于窗口的坐標(biāo)系弹惦。否則視圖和那個接收者必須屬于同一個UIWindow對象。

返回值

一個轉(zhuǎn)換到接收者坐標(biāo)系的點(diǎn)

//這里的convert語句悄但,如果是toView棠隐,前面調(diào)用的時候都是之前point或者rect的父視圖,后面toView中應(yīng)該用將轉(zhuǎn)換到的目標(biāo)視圖檐嚣,如此得到在目標(biāo)視圖中的point或者frame

//如果是fromView的話助泽,剛好相反,前面是目標(biāo)視圖調(diào)用嚎京,fromView是原point或者rect的父視圖嗡贺,同樣返回在目標(biāo)視圖中的point或者frame

convertPoint:toView:

轉(zhuǎn)換一個點(diǎn)從接收者坐標(biāo)系到給定的視圖坐標(biāo)系

- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view

參數(shù)

point

一個在調(diào)用者坐標(biāo)系中的點(diǎn)

view

一個包含了需要被轉(zhuǎn)換的點(diǎn)的視圖。如果視圖是nil鞍帝,那么這個方法將會轉(zhuǎn)換成基于窗口的坐標(biāo)诫睬。否則視圖和接收者都要屬于同一個UIWindow對象。

返回值

基于視圖的坐標(biāo)系轉(zhuǎn)換過的點(diǎn)

convertRect:fromView:

轉(zhuǎn)換一個矩形從其他視圖坐標(biāo)系到接收者坐標(biāo)系膜眠。

- (CGRect)convertRect:(CGRect)rect fromView:(UIView *)view

參數(shù)

rect

一個在視圖坐標(biāo)系中的矩形

view

一個視圖內(nèi)部有矩形在他的坐標(biāo)系中岩臣。如果視圖是nil,那么這個方法將會基于窗口來轉(zhuǎn)換宵膨。否則視圖和接收者必須都屬于同一個UIWindow對象

返回值

The converted rectangle

轉(zhuǎn)換過的矩形

convertRect:toView:

轉(zhuǎn)換接收者坐標(biāo)系中的矩形到其他視圖

- (CGRect)convertRect:(CGRect)rect toView:(UIView *)view

參數(shù)

rect

一個在接收者坐標(biāo)系中的矩形

view

要轉(zhuǎn)換過去的目標(biāo)視圖對象架谎。如果這個是視圖是nil,這個方法將會基于窗口坐標(biāo)系來轉(zhuǎn)換辟躏。否者視圖和接收者必須屬于同一個UIwindow對象

返回值

一個轉(zhuǎn)換過的矩形

didAddSubview:

告訴視圖當(dāng)子視圖已經(jīng)添加

- (void)didAddSubview:(UIView *)subview

參數(shù)

subview

被添加做子視圖的視圖對象

討論

被子類重寫用來執(zhí)行額外的命令當(dāng)子視圖添加到接收者谷扣。這個方法被addSubview調(diào)用

/*didMoveToWindow與didMoveToSuperview的區(qū)別

功能上兩者都是加載視圖,同時使用兩者時候調(diào)用順序:

第一步:調(diào)用didMoveToWindow

第二步:調(diào)用didMoveToSuperview

第三步:再次調(diào)用didMoveToWindow

可以不實(shí)現(xiàn)didMoveToSuperview捎琐,在使用UIPickerView的時候初次加載默認(rèn)選項(xiàng)可以使用didMoveToSuperview

這兩個方法的調(diào)用在每次加載的時候都調(diào)用会涎,譬如在UIScrollView中放置其個view,每次view出現(xiàn)的時候調(diào)用一次didMoveToWindow和didMoveToSuperview瑞凑,消失的時候調(diào)用一次didMoveToWindow末秃;再次出現(xiàn)的時候再次進(jìn)行這樣的操作。

*/

didMoveToSuperview

通知接收者父視圖已經(jīng)改變(nil是允許的)

- (void)didMoveToSuperview

討論

默認(rèn)不做任何事情籽御;子類可以重寫這方法來作為特定的實(shí)現(xiàn)

didMoveToWindow

通知接收者它一斤給添加到窗口中

- (void)didMoveToWindow

討論

默認(rèn)實(shí)現(xiàn)不做任何事情练慕;子類可以重寫這個方法來做特殊的實(shí)現(xiàn)

窗口的屬性有可能是nil當(dāng)這個方法調(diào)用的時候,這表明接收者并不屬于當(dāng)然任何一個窗口技掏。這個只發(fā)生在接收者從它的父視圖上移除或者接收者添加到父視圖中而不是添加到window中铃将。重寫這個方法可以用來選擇忽略一些他們不關(guān)心的對象

drawRect:

在接收者視圖中繪制矩形

- (void)drawRect:(CGRect)rect

參數(shù)

rect

一個定義的需要繪制的矩形

討論

子類重寫這個方法如果他們確實(shí)要繪制他們自定義的視圖。如果子類是其他視圖的容器那么它不需要重寫這個方法哑梳。默認(rèn)的實(shí)現(xiàn)不做任何事情劲阎。如果你自定義的視圖是一個UIView子類,你不需要去調(diào)用它的父類實(shí)現(xiàn)鸠真。注意如果它的父類實(shí)現(xiàn)繪制并且不透明屬性為YES那么每一個子類都需要填充矩形悯仙。

當(dāng)這個方 法被調(diào)用龄毡,接收者可以假定他的幀在坐標(biāo)上已經(jīng)轉(zhuǎn)換,邊界矩形已經(jīng)應(yīng)用雁比;所有他要做的就是繪制自定義的方法稚虎。使用UIGraphicsGetCurrentContext方法去獲取當(dāng)前圖形內(nèi)容用來繪制撤嫩,坐標(biāo)原點(diǎn)在左上角偎捎。不要保留圖片內(nèi)容當(dāng)他可以被drawRect:這個方法調(diào)用。

exchangeSubviewAtIndex:withSubviewAtIndex:

交換接收者的子視圖和給定的索引視圖

- (void)exchangeSubviewAtIndex:(NSInteger)index1withSubviewAtIndex:(NSInteger)index2

參數(shù)

index1

一個需要取代索引2的子視圖

index2

一個需要取代索引1的子視圖

hitTest:withEvent:

返回接收者視圖層次中最遠(yuǎn)的派生(包括它本身)的特定的點(diǎn)序攘。

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event

參數(shù)

point

接收者坐標(biāo)系中的點(diǎn)

event

觸發(fā)這個方法的事件或者是如果這個方法被預(yù)調(diào)用就返回nil

返回值

一個視圖對象最遠(yuǎn)的派生點(diǎn)茴她。如果這個點(diǎn)位于接收者之外就返回nil

討論

這 個方法貫穿視圖的層次發(fā)送pointInside:withEvent:消息到每一個子視圖用來決定那個子視圖需要接收觸摸事件。如果pointInside:withEvent:返回YES程奠,那么視圖的層次全部貫穿丈牢;否則視圖層次的分支是被否定的。你不太需要調(diào)用這個方法瞄沙,但是你需要重寫它用來隱藏子視圖的觸摸事件己沛。

如果視圖是隱藏的,禁止用戶交互的或者透明值小于01那么這個方法不可用

initWithFrame:

初始化并返回一個新的擁有特定幀矩形的視圖對象

- (id)initWithFrame:(CGRect)aRect

參數(shù)

aRect

一個幀矩形用來創(chuàng)建視圖對象距境。原始的幀在它的父視圖的坐標(biāo)系中申尼。設(shè)置這個屬性用來改變中心和邊界屬性。

返回值

一個初始化的視圖對象垫桂,如果沒有被創(chuàng)建那就返回nil

討論

一個新的視圖對象必須添加到視圖鏈中才能使用师幕。這個方法為UIView類指出初始化對象。

insertSubview:aboveSubview:

在視圖層次頂層插入一個視圖

- (void)insertSubview:(UIView *)view aboveSubview:(UIView*)siblingSubview

參數(shù)

view

一個插入被用來放在頂層的視圖诬滩。它將會從父視圖中移除如果它不是相鄰視圖

siblingSubview

一個相鄰視圖用來放在插入視圖的後面

insertSubview:atIndex:

插入視圖到指定的索引

- (void)insertSubview:(UIView *)view atIndex:(NSInteger)index

參數(shù)

view

插入的視圖霹粥,這個值不能是nil

index

子視圖索引從0開始并且不能大于子視圖的數(shù)量

insertSubview:belowSubview:

插入視圖到顯示鏈的底層

- (void)insertSubview:(UIView *)view belowSubview:(UIView*)siblingSubview

參數(shù)

view

一個需要插入到其他視圖底部的視圖。它將從它的父視圖移除如果它不與相鄰視圖的相鄰

siblingSubview

一個相鄰視圖將會在插入的視圖之上

isDescendantOfView:

返回一個布爾值指出接收者是否是給定視圖的子視圖或者指向那個視圖

- (BOOL)isDescendantOfView:(UIView *)view

參數(shù)

view

一個視圖用來測試子視圖在視圖層次中的關(guān)系

返回值

如果接收者是視圖的子視圖就返回YES疼鸟,或者視圖就是接收者后控;否則就是NO

layoutIfNeeded

排列子視圖如果需要的話

- (void)layoutIfNeeded

討論

使用這個方法來關(guān)注子視圖的排列在繪制前

layoutSubviews

排列子視圖

- (void)layoutSubviews

討論

當(dāng)layoutIfNeeded被調(diào)用是子類用來重寫這個方法來排列子視圖。默認(rèn)實(shí)現(xiàn)這個方法不做任何事情空镜。

pointInside:withEvent:

返回一個布爾值指出接收者是否包含特定的點(diǎn)

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event

參數(shù)

point

一個在接收者坐標(biāo)系內(nèi)的點(diǎn)

event

這個方法的目標(biāo)事件或者如果這個方法被預(yù)調(diào)用返回nil

返回值

如果點(diǎn)在接收者邊界內(nèi)返回YES浩淘,否則返回NO

removeFromSuperview

把接收者從它的父視圖或者窗口移除,并在響應(yīng)鏈中移除姑裂。

- (void)removeFromSuperview

討論

接收者同時釋放馋袜;如果你計(jì)劃重用它,要確定在發(fā)送消息前保持它并在添加到其他UIView對象作為子視圖後移除舶斧。不要在顯示的時候調(diào)用

sendSubviewToBack:

移動指定的子視圖到它相鄰視圖的後面

- (void)sendSubviewToBack:(UIView *)view

參數(shù)

view

一個子視圖用來移動到它後面去

setNeedsDisplay

控制接收者的邊界矩形被標(biāo)記為需要顯示

-(void)setNeedsDisplay

討論

默認(rèn)情況下欣鳖,視圖幾何圖形的改變自動重繪而不需要調(diào)用drawRect:方法。因此茴厉,你需要去請求視圖重繪當(dāng)視圖的數(shù)據(jù)或者狀態(tài)改變的時候泽台。從這個意義上來說什荣,向視圖發(fā)送setNeedsDisplay消息。任何UIView對象標(biāo)記為需要顯示後將會在應(yīng)用程序循環(huán)中自動重新繪制怀酷。

setNeedsDisplayInRect:

標(biāo)記接收者中的特定的矩形區(qū)域?yàn)樾枰@示稻爬,或者添加接收者現(xiàn)有的其他無效區(qū)域

- (void)setNeedsDisplayInRect:(CGRect)invalidRect

參數(shù)

invalidRect

標(biāo)記接收者的矩形區(qū)域?yàn)闊o效的;他需要在接收者坐標(biāo)系中定義蜕依。

討論

默認(rèn)情況下桅锄,視圖幾何圖形的改變自動重繪而不需要調(diào)用drawRect:方法。因此样眠,你需要去請求視圖重繪當(dāng)視圖的數(shù)據(jù)或者狀態(tài)改變的時候友瘤。使用這個方法或者用setNeedsDisplay方法來標(biāo)記視圖需要顯示的地方。

setNeedsLayout

設(shè)置當(dāng)子視圖顯示的時候需要重新排列

- (void)setNeedsLayout

討論

如果你調(diào)用這個方法在下一個顯示方法之間檐束,那么layoutIfNeeded排列子視圖辫秧;否則將不會做任何事情

sizeThatFits:

計(jì)算并返回一個最好的適應(yīng)接收者子視圖的大小

- (CGSize)sizeThatFits:(CGSize)size

參數(shù)

size

接收者首選的尺寸

返回值

一個新的大小用來適應(yīng)接收者子視圖

討論

默認(rèn)的實(shí)現(xiàn)返回大小參數(shù)子類重寫這個方法用來返回特定視圖的大小。舉個粒子被丧,UISwitch返回一個修正過的大小盟戏,UIImageView返回圖片的大小這個方法并沒有改變接收者的大小

sizeToFit

調(diào)整大小并移動接收者視圖大小所以他包含了他的子視圖

- (void)sizeToFit

討論

這個方法使用sizeThatFits:方法來決定大小。子類需要重寫sizeThatFits:用來計(jì)算正確的尺寸大小甥桂。默認(rèn)的實(shí)現(xiàn)不做任何事情柿究。

viewWithTag:

返回視圖的特定的標(biāo)簽

- (UIView *)viewWithTag:(NSInteger)tag

參數(shù)

tag

一個用來在視圖中搜索的標(biāo)簽

返回值

視圖在接收者層次中符合的標(biāo)簽,接收者也包含在搜索中格嘁。

willMoveToSuperview:

通知接收者他的父視圖將會改變到特定的父視圖(也有可能是nil)

- (void)willMoveToSuperview:(UIView *)newSuperview

參數(shù)

newSuperview

新的視圖對象將會是接收者新的父視圖

討論

子類可以重寫這個方法來做一些特定的行為

willMoveToWindow:

通知接收者它已經(jīng)被添加到特定的窗口對戲那個的視圖層次中(也有可能是nil)

- (void)willMoveToWindow:(UIWindow *)newWindow

參數(shù)

newWindow

一個窗口對象將會成為接收者新的視圖層次的根視圖

討論

子類可以重寫這個方法來提供一些特定的必要實(shí)現(xiàn)

willRemoveSubview:

由子類重寫用來在子視圖從接收者視圖中移除前執(zhí)行一些特定的方法笛求。

- (void)willRemoveSubview:(UIView *)subview

參數(shù)

subview

子視圖將會被移除

討論

這個方法被調(diào)用當(dāng)子視圖接收到removeFromSuperview消息或者子視圖從接收者視圖層次中移除因?yàn)樗惶砑拥狡渌晥D了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市糕簿,隨后出現(xiàn)的幾起案子探入,更是在濱河造成了極大的恐慌,老刑警劉巖懂诗,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蜂嗽,死亡現(xiàn)場離奇詭異,居然都是意外死亡殃恒,警方通過查閱死者的電腦和手機(jī)植旧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來离唐,“玉大人病附,你說我怎么就攤上這事『蓿” “怎么了完沪?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我覆积,道長听皿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任宽档,我火速辦了婚禮尉姨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘吗冤。我一直安慰自己又厉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布欣孤。 她就那樣靜靜地躺著馋没,像睡著了一般。 火紅的嫁衣襯著肌膚如雪降传。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天勾怒,我揣著相機(jī)與錄音婆排,去河邊找鬼。 笑死笔链,一個胖子當(dāng)著我的面吹牛段只,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鉴扫,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼赞枕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了坪创?” 一聲冷哼從身側(cè)響起炕婶,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎莱预,沒想到半個月后柠掂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡依沮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年涯贞,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片危喉。...
    茶點(diǎn)故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡宋渔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出辜限,到底是詐尸還是另有隱情皇拣,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布列粪,位于F島的核電站审磁,受9級特大地震影響谈飒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜态蒂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一杭措、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧钾恢,春花似錦手素、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至疹瘦,卻和暖如春崩哩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背言沐。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工邓嘹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人险胰。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓汹押,卻偏偏與公主長得像,于是被迫代替她去往敵國和親起便。 傳聞我的和親對象是個殘疾皇子棚贾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容