1秸谢、關(guān)于IBDesignable和IBInspectable
這是蘋果為了更方便開(kāi)發(fā)者在XIB下開(kāi)發(fā)而開(kāi)放的兩個(gè)接口屬性,目的就是為了讓更多的開(kāi)發(fā)者轉(zhuǎn)到以XIB+Storyboard為主的開(kāi)發(fā)上來(lái)钮追,這兩個(gè)屬性的增加對(duì)于那些喜歡用XIB開(kāi)發(fā)卻苦惱于自定義視圖屬性無(wú)法實(shí)時(shí)更新顯示的開(kāi)發(fā)者來(lái)說(shuō),無(wú)疑是極大的福音元媚。如果你是以XIB為主的開(kāi)發(fā)者,那么你一定非常喜歡attributesInspector這個(gè)面板苗沧,它可以讓你快捷方便的設(shè)置視圖的屬性和一些基本的賦值(比如button、label待逞、textField等)操作
不僅簡(jiǎn)單快捷,還能實(shí)時(shí)看到UI效果识樱,對(duì)于開(kāi)發(fā)效率而言提升的真不是一星半點(diǎn)!
但是如果你是自定義了一個(gè)視圖,經(jīng)過(guò)一層層的封裝怜庸,許多復(fù)雜的效果和屬性都被你盡入其中,在XIB中設(shè)置你希望的view類名為你自定義的類名割疾,設(shè)置好約束,故事到此告一段落宏榕。如果你想預(yù)覽它的UI效果侵佃,不好意思,你只能看到白茫茫的一片奠支。想象一下如果能把你自定義的視圖可以在XIB界面上實(shí)時(shí)編輯預(yù)覽效果那該多好!這時(shí)就要IBDesignable和IBInspectable出場(chǎng)了
以一個(gè)簡(jiǎn)單的自定義進(jìn)度條視圖為例胚宦,如果沒(méi)有這兩個(gè)屬性,你在XIB上添加的進(jìn)度條類視圖只能是一個(gè)普通的view枢劝,不能看到它的進(jìn)度和顏色。加入我們需要在導(dǎo)航欄下方添加一個(gè)指示當(dāng)前頁(yè)面數(shù)據(jù)請(qǐng)求進(jìn)度的進(jìn)度指示條您旁,大概就是這樣
但是在XIB界面中你卻看到的是這個(gè)樣子
如果換成更復(fù)雜的界面,這將是非常糟糕的一種開(kāi)發(fā)體驗(yàn)『缀校現(xiàn)在我們?yōu)檫@個(gè)自定義類增加IBDesignable和IBInspectable這兩個(gè)屬性,就像這樣
這時(shí)再打開(kāi)XIB界面,你會(huì)看到
而且可以實(shí)時(shí)改變屬性變量的值來(lái)預(yù)覽改變效果
2、關(guān)于XIB橋接
如果一個(gè)項(xiàng)目多處用到功能界面一樣并且構(gòu)建復(fù)雜的視圖侦锯,我們可能需要一個(gè)一個(gè)搭建,這樣會(huì)非常浪費(fèi)開(kāi)發(fā)時(shí)間尺碰,如果可以將XIB中的view直接與自定義的用xib搭建的view關(guān)聯(lián)起來(lái),那樣會(huì)好很多亲桥,也減少了自定義視圖的開(kāi)發(fā)時(shí)間洛心,提高了開(kāi)發(fā)效率题篷。例如這樣一個(gè)界面
三個(gè)獨(dú)立的視圖,我們可以直接自己創(chuàng)建一個(gè)自定義視圖,在XIB界面中只需要?jiǎng)?chuàng)建三個(gè)類名為XXView(自定義類名)的view番枚,拉好約束,自定義視圖那些可以改變的屬性都加上IBInspectable關(guān)鍵字
這里用到的橋接技術(shù)來(lái)自孫源大神的XXNibBridge(簡(jiǎn)單好用易學(xué)葫笼,誰(shuí)用誰(shuí)知道!),Swift版的可以看LCNibBridge,不需要用到IBDesignable關(guān)鍵字,只需要IBInspectable即可渔欢,由于自定義視圖也是用XIB搭建瘟忱,所以即使在storyboard中看不到具體界面奥额,看自定義XIB界面也是一樣的
整個(gè)過(guò)程就是這么簡(jiǎn)單!
小記:
XIB固然還有許多不足之處垫挨,但是如果掌握了這項(xiàng)技能,它在開(kāi)發(fā)中給我們帶來(lái)的效率提升絕對(duì)不是一星半點(diǎn)九榔,這篇文章也給大家?guī)?lái)了一些讓XIB開(kāi)發(fā)效率更上一層樓的東西,如果你喜歡在項(xiàng)目中使用XIB哲泊,那么這些小技巧和技能或許能給你帶來(lái)一定的幫助剩蟀。本人是XIB開(kāi)發(fā)的愛(ài)好者切威,所以拿來(lái)一些自己平時(shí)喜歡的感覺(jué)對(duì)開(kāi)發(fā)效率有幫助的東西分享給大家,希望共同成長(zhǎng)!