一鼎姐、前言
由于公司的iMac之前一直使用的是機(jī)械硬盤掸掏,所以在使用Xib的時(shí)候會(huì)導(dǎo)致電腦卡的飛起郭赐,所以一直以來(lái)都是純代碼構(gòu)建頁(yè)面荸镊。在經(jīng)過(guò)不斷的吐槽之后公司終于換上了固態(tài)硬盤,在iMac整體速度大幅提升的情況下,又重新開(kāi)始使用Xib畫UI躬存。
二张惹、Xib的嵌套
在開(kāi)發(fā)中如果頁(yè)面比較復(fù)雜一般會(huì)拆分成多個(gè)子視圖,而如果一個(gè)使用Xib的頁(yè)面存在大量的控件岭洲,那么就可以考慮將它拆分成多個(gè)子X(jué)ib然后嵌套使用宛逗。下面介紹一下Xib的嵌套使用:
1.首先創(chuàng)建子控件的Xib文件
2.指定File‘s Owner的Custom Class為自定義View的類名
3.重寫CustomView的?init?(coder aDecoder:NSCoder) 方法,在里面加載Xib
4.在父視圖上拖出一個(gè)View并將這個(gè)View的類名設(shè)置成自定義View的類名
注意: 第二步和第四步都是設(shè)置Custom Class盾剩,不過(guò)一個(gè)是設(shè)置子視圖的File’s Owner,一個(gè)是設(shè)置父視圖中UIView雷激。
然后編譯運(yùn)行后就能看到自定義的View已經(jīng)顯示到了界面上。
三告私、遇到的問(wèn)題
在使用Xib嵌套Xib的時(shí)候出現(xiàn)了下面這種尷尬的情況屎暇。兩個(gè)自定義的UIView和一個(gè)UIButton,但是在頁(yè)面上只能看到Button的顯示效果驻粟,自定義的UIView是一片空白根悼。只有運(yùn)行之后才能看到頁(yè)面,那么怎樣才能在不運(yùn)行的情況下也讓Xib上的控件也能顯示出來(lái)呢?
四蜀撑、IBDesignable
實(shí)際上為了解決這個(gè)問(wèn)題挤巡,Xcode提供了一個(gè)叫做?IBDesignable的東西。
IBDesignable功能就是讓XCode動(dòng)態(tài)渲染出該類圖形化界面酷麦。
在自定義的View添加 IBDesignable,
這時(shí)Xib上會(huì)出現(xiàn)一個(gè) Designables 顯示當(dāng)前的編譯狀態(tài)矿卑。
五、IBDesignable Build Failed
如果在使用IBDesignable的過(guò)程中出現(xiàn)Buil Failed,下面提供一種解決方法沃饶。
1. 在自定義的View中重寫?init(frame:CGRect) 方法 并且加載 Xib母廷。
2.打開(kāi)Xcode -> Preferences -> Locations? 點(diǎn)擊小箭頭進(jìn)入 Derived Data文件夾,刪除里面的內(nèi)容。
3. Clean 整個(gè)工程?
4. 重啟Xcode糊肤。