轉載:https://my.oschina.net/u/2340880/blog/523064
一咙边、引言
前邊的幾篇博客付魔,我們了解了UICollectionView的基本用法以及一些擴展,在不定高的瀑布流布局中碱茁,我們發(fā)現(xiàn)棍好,可以通過設置具體的布局屬性類UICollectionViewLayoutAttributes來設置設置每個item的具體位置,我們可以再擴展一下耿焊,如果位置我們可以自由控制,那個布局我們也可以更加靈活扬蕊,就比如創(chuàng)建一個如下的circleLayout:
這種布局方式在apple的官方文檔中也有介紹搀别,是UICollectionView的一個應用示例丹擎。
二尾抑、設計一個圓環(huán)布局
接著我們以前的想法,依然時候隨機顏色的色塊來表達我們的item蒂培,先自定義一個layout類再愈,這個類繼承于UICollectionViewLayout,UICollectionLayout是一個布局抽象基類护戳,我們要使用自定義的布局方式翎冲,必須將其子類化,可能你還記得媳荒,我們在進行瀑布流布局的時候使用過UICollectionViewFlowLayout類抗悍,這個類就是繼承于UICollectionViewLayout類,系統(tǒng)為我們實現(xiàn)好的一個布局方案钳枕。
@interfaceMyLayout:?UICollectionViewLayout//這個int值存儲有多少個item
@property(nonatomic,assign)int?itemCount;
@end
我們需要重寫這個類的三個方法缴渊,來進行圓環(huán)布局的設置,首先是prepareLayout鱼炒,為布局做一些準備工作衔沼,使用collectionViewContentSize來設置內(nèi)容的區(qū)域大小,最后使用layoutAttributesForElementsInRect方法來返回我們的布局信息字典昔瞧,這個前面瀑布流布局的思路是一樣的:
如上非常簡單的一些邏輯控制指蚁,我們就實現(xiàn)哦圓環(huán)布局,隨著item的多少自晰,布局會自動調(diào)整凝化,如果不是UICollectionView的功勞,實現(xiàn)這樣的功能酬荞,我們可能要寫上一陣子了^_^搓劫。