iOS9 Programming - UIView (I)

iOS9 - UIView

子視圖 & 父視圖

今天主要研究了一下關于UIView章節(jié)的內(nèi)容,發(fā)現(xiàn)以前對UIView的理解太過膚淺舆驶,里面的很多細節(jié)和原理都沒有仔細研究過澎埠。可以說通過今天的研讀真的是受益匪淺熊昌,書中所講的一些內(nèi)容我可能還不知道要什么時候用,但感覺非常有用不明覺厲的感覺湿酸。好了婿屹,接下來我們一起來探索UIView里面的奧秘

很久之前,每個View都擁有一塊屬于自己的矩形區(qū)域推溃,并且超出view涵蓋部分的subview是不可見的昂利。可能這個歷史我們都不曉得因為是很久以前的事了铁坎,現(xiàn)在我門在使用UIView的時候蜂奸,即使子view超出了父view的矩形區(qū)域,子view還是可以顯示,如圖:

subviews.png

view與view之間存在層級關系厢呵,它們之間的層級關系也暗示著view被繪制的順序窝撵。關于view的hierarcy需要自己去意會。

下面是是view層級的一些特性:

  • 如果一個view從superview上面移除或者加載到superview上面襟铭,則這個view的subviews也會移除或被加載到superview上
  • view的subviews的透明度繼承自view
  • 一個view可以選擇性的限制是否繪制超出view本身區(qū)域的subviews,通過view的clipsToBounds屬性
  • superview擁有他的subviews短曾,因此在內(nèi)存中寒砖,很像一個數(shù)組管理他的元素。superview持有這些subviews并且負責釋放它們嫉拐,比如當subview不再是父視圖的subview的時候(當subview從superview中移除)哩都,需要注意的是 當你把subview從superview上移除的時候,subview將會被釋放婉徘,如果你在后面還要使用該subview則你需要先retain一遍subview才可以
  • 當view的size改變時漠嵌,它的子視圖會自動的重置size

一個UIView包含它的父視圖和子視圖所有的屬性咐汞,因此你可以在代碼中通過isDescendantOfView:方法來檢查一個view是否在某個深度是另一個view的子視圖。

如果你需要引用一個特定的view可以通過viewWithTag:來查找儒鹿。這需要你事先先給view添加在它的層級范圍內(nèi)唯一的標識

為一個UIView添加subview需要調(diào)用addSubviews化撕,在你調(diào)用該方法時,新添加的subview會置于superview的subviews中约炎,并且最后一個被繪制植阴,這也意味著會顯示在屏幕最上層,其實原理就是壓棧圾浅。view會為它的subviews添加索引掠手,索引從0開始。這里還有一些關于添加subview的其他方法

  • insertSubview:atIndex
  • insertSubview:belowSubview:, insertSubview:aboveSubview:
  • exchangeSubviewAtIndex:withSubviewAtIndex:
  • bringSubviewToFront:, sendSubviewToBack:

view的subviews數(shù)組是對subviews里面列表的一個不可變拷貝狸捕。我對這就話的理解是喷鸽,view中的subviews數(shù)組是一個可變數(shù)組,但是view的subviews屬性是對哪個可變數(shù)組的拷貝灸拍,并且是不可變拷貝做祝。這樣在你將subview從superview中移除的時候,只能一個個的遍歷刪除株搔。不可以一次性的將所有的subviews刪除
myView.subviews.forEach {$0.removeFromSuperview()}

可見度和不透明度

一個View是否可見通過設置它的hidden屬性剖淀,為true則隱藏視圖不可見,為false則用戶可見纤房。值得一提的是纵隔,當view的完全透明的時候,則它相當于被hidden掉炮姨,他用戶交互也會被禁用

alpha: 通過alpha屬性可以設置視圖部分或完全透明捌刮。1.0代表不透明,0.0代表透明舒岸。當你給父視圖設置alpha = 0.5 則它的子視圖的不透明度絕不會超過0.5绅作。比如說你給一個view的alpha設置為1.0但是它的背景卻是透明的,那是因為view的backgroundcolor的alpha值一定小于1.0

opaque:UIView中存在一個opaque(不透明)屬性蛾派,它是一個布爾類型俄认。我對于這個屬性的理解還不透徹,總結起來好像是說如果view的alpha值 < 1 ,opaque應該設置為NO洪乍,如果alpha = 1眯杏,opaque應該為YES,opaque的默認值是YES壳澳。其用途主要是提升繪制的性能岂贩。

今天就看了這么多內(nèi)容,精彩內(nèi)容明天繼續(xù)巷波,fightingN颉P渡 !
若有紕漏歡迎指正锉屈,共同進步??

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末荤傲,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子部念,更是在濱河造成了極大的恐慌弃酌,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件儡炼,死亡現(xiàn)場離奇詭異妓湘,居然都是意外死亡,警方通過查閱死者的電腦和手機乌询,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門榜贴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人妹田,你說我怎么就攤上這事唬党。” “怎么了鬼佣?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵驶拱,是天一觀的道長。 經(jīng)常有香客問我晶衷,道長蓝纲,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任晌纫,我火速辦了婚禮税迷,結果婚禮上,老公的妹妹穿的比我還像新娘锹漱。我一直安慰自己箭养,他們只是感情好,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布哥牍。 她就那樣靜靜地躺著毕泌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嗅辣。 梳的紋絲不亂的頭發(fā)上懈词,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天,我揣著相機與錄音辩诞,去河邊找鬼。 笑死纺涤,一個胖子當著我的面吹牛译暂,可吹牛的內(nèi)容都是我干的抠忘。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼外永,長吁一口氣:“原來是場噩夢啊……” “哼崎脉!你這毒婦竟也來了?” 一聲冷哼從身側響起伯顶,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤囚灼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后祭衩,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體灶体,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年掐暮,在試婚紗的時候發(fā)現(xiàn)自己被綠了蝎抽。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡路克,死狀恐怖樟结,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情精算,我是刑警寧澤瓢宦,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站灰羽,受9級特大地震影響驮履,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜谦趣,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一疲吸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧前鹅,春花似錦摘悴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至捂寿,卻和暖如春口四,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背秦陋。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工蔓彩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓赤嚼,卻偏偏與公主長得像旷赖,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子更卒,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

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