(一)前言
最近放縱的過了頭,筆記好久沒有寫了,然而LOL的段位并沒有并沒有因為多包宿而上升,真是個令人悲傷的故事。Xcode總有一些很少用到隱藏很深的小秘密,今天我們就來扒一扒Storyboard,讓哥幾個爽一爽。
(二)正文
1.Runtime Attribute
Runtime大法好呀!
我們都知道,Objc是一門動態(tài)語言,而這一切都要歸功于強大的Runtime庫。在日常的使用過程中,我們打交道最多的就是屬性面板了(Attributes inspector),改背景顏色啊,改Lable內(nèi)容啊等等。它非常的方便是沒有錯,但是它也有局限性。比如設(shè)置圓角,在屬性面板中并沒有這一選項。但是通過Runtime Attribute我們就可以完美的解決問題。當(dāng)然啦,屬性面板能夠做的事情,它自然也是不在話下了。
只需要輕輕一點右下角的加號,然后就像代碼中KVC的使用方法那樣,填上KeyPath,填上Value,一切搞定!



2.Global Tint
有的時候我們有這樣的需求,在Storyboard中所有的Tint Color都設(shè)置為其他的顏色,而不是默認的藍色。那么,我們?nèi)绻刻砑右粋€控件就在屬性面板中設(shè)置這種辦法實在是太Low了,好在Apple為我們考慮到了這一點,在Storyboard中的File inspector中的Global Tint為我們完美的解決了這一點。為該屬性設(shè)置了顏色以后,該Storyboard中的所有控件的Tint Color都變成了你所設(shè)置的顏色,比如UIButton的字體顏色、UIProgress進度條的顏色等等,是不是方便了很多呢?


3.Outlet Collections
Outlet是iOS“拖線”開發(fā)中最基礎(chǔ)也是最常用的操作了,相信大家也已經(jīng)用的非常熟練了。Outlet Collections從名字上面我們就可以知道,它是Outlet的一種集合。舉個例子吧:有一個UI界面中有很多的UIButton,業(yè)務(wù)邏輯上他們屬于同一塊,然后你要在.m中獲取他們的引用,原來的方法是一個一個的給他們拖線,命名,然后再拖線...但是有了Collection以后世界就不一樣了。步驟如下:


其他幾個的控件也是相同操作拖線到該Collections。我們可以看到,得到的引用是一個該控件類的數(shù)組集合。也就是說,不同類型的組件不能通過Collections來集合獲取。

OK啦,最后我們來測試一下獲取那幾個Button。

4.Storyboard Reference
在使用Storyboard開發(fā)中,最為人詬病的可能莫過于多人開發(fā)了,唐巧當(dāng)年在一篇博文中將其稱之為“災(zāi)難”(詳情可見他的個人博客)。機智的蘋果也看到了這個的問題,于是Storyboard Reference就出現(xiàn)了。它將一個原本龐大的Storyboard分發(fā)成多個子Storyboard,在父本中只能看到子體的引用。在多人開發(fā)的過程中,每個人修改自己的那個子體,那么就不會有那么多蛋疼的事情了。



當(dāng)然啦,每個人的使用習(xí)慣不一樣。你也可以選擇先新建一個Storyboard,然后再Main.Storyboard中添加一個Storyboard Reference控件,然后在屬性面板設(shè)置關(guān)聯(lián),就像下面那樣。

5.對齊相關(guān)
用過PS的人應(yīng)該都知道輔助線的作業(yè),當(dāng)然萬能的Xcode也是提供了輔助線的功能的。單擊某個控件,按下shift+Command+-添加橫向輔助線,shift+Command+|添加縱向輔助線,添加的位置都是左右/上下居中的。如果你想要刪除輔助線,那么把它拖到最邊邊就可以啦!

有的時候我們需要快捷的知道某個控件上下左右的距離,那么我們只需要選擇相應(yīng)的控件,然后按下Option就可以啦,當(dāng)你鼠標移動到其他的控件的時候,也會智能的顯示出與該控件的位置距離參數(shù)。如下圖:

(三)結(jié)語
Storyboard剛出生的時候,它確實有這樣那樣的缺陷,但是經(jīng)過幾年的發(fā)展,蘋果不斷的改進,它已經(jīng)成為iOS快速開發(fā)不可或缺的重要工具。工程師的時間并不應(yīng)該浪費在那些無聊乏味的代碼上,在這一點上Storyboard一直未忘初心。
關(guān)于Storyboard的小技巧我相信還有很多,小伙伴們有什么新發(fā)現(xiàn)還記得多多分享哦!
最后的最后,祝大家2016年寫出越來越精致的代碼,我們Github上見!