UICollectionViewLayoutAttributes

父類:NSObject

一個UICollectionViewLayoutAttributes對象管理著一個Collection View中給定的一個Item的布局有關(guān)的屬性。當(dāng)被Collection View要求時布局對象創(chuàng)建這個類的實例纽疟。反之爪喘,Collection View使用布局信息在它的bounds中放置CellSupplementary View

一蹈胡、概述

子類化注意

大多數(shù)情況下,你像這樣使用這個類。如果你想要使用自定義布局屬性來補充基本的布局屬性域滥,你可以聲明一個子類,并且定義任何你想要存儲額外的布局數(shù)據(jù)的屬性蜈抓。由于布局屬性對象可能會被Collection View復(fù)制启绰,請確保你的子類遵循NSCopying協(xié)議的方法的實現(xiàn),以便于恰當(dāng)?shù)膹?fù)制你的自定義屬性到一個新的你自定義的子類中沟使。除了定義你的子類之外委可,你的UICollectionReusableView對象需要實現(xiàn)- (void)applyLayoutAttributes:(UICollectionViewLayoutAttributes *)layoutAttributes;方法,以便于它們可以布局階段在展示任何自定義屬性腊嗡。
如果你子類化并且實現(xiàn)任何自定義布局屬性着倾,你也必須重寫繼承的isEqual:方法來比較你的自定義屬性的值拾酝。在iOS 7以及之后的版本中,如果布局屬性沒有被改變那么Collection View就不顯示這些布局屬性屈呕。這個取決于通過isEqual:方法比較新舊兩個屬性對象是否發(fā)生改變微宝。由于這個方法的默認實現(xiàn)只會檢查這個類原本存在的屬性,你必須執(zhí)行你自己的寫的這個方法來比較你額外添加的屬性虎眨。如果你的自定義屬性都是相等的蟋软,那么在你的實現(xiàn)的最后要調(diào)用super并且返回super返回的結(jié)果。

二嗽桩、內(nèi)容

1. 創(chuàng)建布局屬性

+ (instancetype)layoutAttributesForCellWithIndexPath:(NSIndexPath *)indexPath;

創(chuàng)建并返回一個表示給定索引值對應(yīng)的Cell的布局屬性對象岳守。
使用這個方法為Collection View中的一個Cell創(chuàng)建一個布局屬性對象。Cell是一個通過Collection View視圖展現(xiàn)的主要類型碌冶。一個Cell的索引通常包含了一個Section的索引和一個Item的索引湿痢,這個索引是這個Cell的內(nèi)容在Collection View的數(shù)據(jù)源中的位置。

+ (instancetype)layoutAttributesForSupplementaryViewOfKind:(NSString *)elementKind withIndexPath:(NSIndexPath *)indexPath;

創(chuàng)建并返回一個表示給定索引值對應(yīng)的Supplementary View的布局屬性對象扑庞。
使用這個方法為Collection View中的一個Supplementary View創(chuàng)建一個布局屬性對象譬重。和Cell一樣,Supplementary View當(dāng)前的數(shù)據(jù)是被Collection View數(shù)據(jù)源所管理的罐氨。但是和Cell不同的是臀规,Supplementary View通常是為特殊目的而設(shè)計的。例如栅隐,HeaderFooterCell的放置位置不同塔嬉,是提供給在單個的Section或者整個Collection View的。
由你來決定如何使用indexPath參數(shù)來識別一個給定的Supplementary View租悄。通常谨究,你使用elementKind屬性來確定Supplementary View的類型,然后使用indexPath的信息來識別不同Supplementary View實例泣棋。

+ (instancetype)layoutAttributesForDecorationViewOfKind:(NSString *)decorationViewKind withIndexPath:(NSIndexPath *)indexPath;

創(chuàng)建并返回一個表示給定索引值對應(yīng)的Decoration View的布局屬性對象胶哲。
使用這個方法為Collection View中的一個Decoration View創(chuàng)建一個布局屬性對象。Decoration ViewSupplementary View的一種潭辈,但是不會展示被Collection View數(shù)據(jù)源所管理的數(shù)據(jù)纪吮。相反,它們大多數(shù)為一個Section或者整個Collection View呈現(xiàn)視覺裝飾效果萎胰。
由你來決定如何使用indexPath參數(shù)來識別一個給定的Decoration View碾盟。通常,你使用decorationViewKind屬性來確定Decoration View的類型技竟,然后使用indexPath的信息來識別不同Decoration View實例冰肴。

2. Identifying the Referenced Item

@property(nonatomic, strong) NSIndexPath *indexPath;

Collection ViewItem的索引值。
索引包含了一個Section的索引和一個Item在這個Section中的索引。這兩個值標示在Collection View唯一的對應(yīng)的Item的位置熙尉。

@property(nonatomic, readonly) UICollectionElementCategory representedElementCategory;

Item的類型联逻。
你可以使用這個屬性的值來區(qū)分這個布局屬性是用于一個Cell還是Supplementary View還是Decoration View

UICollectionElementCategory

typedef NS_ENUM(NSUInteger, UICollectionElementCategory) {
    UICollectionElementCategoryCell, // Cell
    UICollectionElementCategorySupplementaryView, // Supplementary View
    UICollectionElementCategoryDecorationView // Decoration View
};
@property(nonatomic, readonly) NSString *representedElementKind;

目標視圖的布局指定標識符检痰。
你可以使用這個屬性的值來標識Supplementary View或者Decoration View相關(guān)聯(lián)的屬性給定的目的包归。如果representedElementCategory屬性為UICollectionElementCategoryCell,那么這個屬性為nil铅歼。

3. 訪問布局屬性

@property (nonatomic) CGRect frame;

Item的矩形邊框公壤。
這個矩形邊框是測量在給定的Collection View坐標系中的點。設(shè)置這個屬性的值也等于設(shè)置center屬性椎椰。

@property (nonatomic) CGRect bounds;

Itembounds厦幅。
當(dāng)設(shè)置bounds屬性時,bounds屬性中的origin必須被設(shè)置為(0, 0)慨飘。改變bounds屬性也會使用新的bounds中的size來匹配改變size屬性确憨。

@property (nonatomic) CGPoint center;

Item的中心點。
這個中心點是在給定的Collection View坐標系中的點瓤的。設(shè)置這個屬性的值也會更新frame屬性中的origin的值休弃。

@property (nonatomic) CGSize size;

Item的大小。
設(shè)置這個屬性的值也會更新frame屬性中的size的值圈膏。

@property (nonatomic) CATransform3D transform3D;

Item的三維變換塔猾。
使用你指定的3D轉(zhuǎn)換的仿射版本賦值給這個屬性來替換transform屬性的值。

@property (nonatomic) CGAffineTransform transform;

Item的仿射變換本辐。
使用你指定的仿射變換賦值給這個屬性來替換transform3D屬性的值。

@property (nonatomic) CGFloat alpha;

Item的透明度医增。
值在0.0(透明)到1.0(不透明)之間慎皱。默認為1.0

@property (nonatomic) NSInteger zIndex;

指定Item在z軸上的位置叶骨。
這個屬性被用來確定在布局時Item的前后順序茫多。大的zIndex值的Item會被顯示在小的zIndex值的Item上面。這個屬性使用相同的值的Item的順序是不確定的忽刽。
這個屬性的值默認為0天揖。

@property(nonatomic, getter=isHidden) BOOL hidden;

決定Item是否在當(dāng)前情況下顯示。
這個屬性的默認值為NO跪帝。為了優(yōu)化今膊,Collection View可能不會創(chuàng)建這個屬性設(shè)置為YESItem

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末伞剑,一起剝皮案震驚了整個濱河市斑唬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖恕刘,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缤谎,死亡現(xiàn)場離奇詭異,居然都是意外死亡褐着,警方通過查閱死者的電腦和手機坷澡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來含蓉,“玉大人频敛,你說我怎么就攤上這事∏床停” “怎么了姻政?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長岂嗓。 經(jīng)常有香客問我汁展,道長,這世上最難降的妖魔是什么厌殉? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任食绿,我火速辦了婚禮,結(jié)果婚禮上公罕,老公的妹妹穿的比我還像新娘器紧。我一直安慰自己,他們只是感情好楼眷,可當(dāng)我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布铲汪。 她就那樣靜靜地躺著,像睡著了一般罐柳。 火紅的嫁衣襯著肌膚如雪掌腰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天张吉,我揣著相機與錄音齿梁,去河邊找鬼。 笑死肮蛹,一個胖子當(dāng)著我的面吹牛勺择,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播伦忠,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼省核,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了昆码?” 一聲冷哼從身側(cè)響起芳撒,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤邓深,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后笔刹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體芥备,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年舌菜,在試婚紗的時候發(fā)現(xiàn)自己被綠了萌壳。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡日月,死狀恐怖袱瓮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情爱咬,我是刑警寧澤尺借,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站精拟,受9級特大地震影響燎斩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蜂绎,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一栅表、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧师枣,春花似錦怪瓶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至陨倡,卻和暖如春敛滋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背玫膀。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工矛缨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留爹脾,地道東北人帖旨。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像灵妨,于是被迫代替她去往敵國和親解阅。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,629評論 2 354

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

  • 父類:NSObject UICollectionViewLayout是抽象基類泌霍,你可以使用它的子類來生成對coll...
    Shmily落墨閱讀 1,759評論 3 3
  • 本文為大地瓜原創(chuàng)货抄,歡迎知識共享述召,轉(zhuǎn)載請注明出處。雖然你不注明出處我也沒什么精力和你計較蟹地。作者微信號:christg...
    大地瓜123閱讀 413評論 0 0
  • 最近將 UICollectionView 進行了一個全面的學(xué)習(xí)及總結(jié)积暖,參考了網(wǎng)上大量的文章,把官方文檔進行了大概翻...
    varlarzh閱讀 21,427評論 3 94
  • UICollectionView 在 iOS6 中第一次被引入怪与,也是 UIKit視圖類中的一顆新星夺刑。它和 UITa...
    評評分分閱讀 1,626評論 0 10
  • 纖月入秋院,輕暈竹清淺分别。 黃花殘欲墮遍愿,枯藤老自憐。 青絲待霜白耘斩,斷夢憶舊顏沼填。 縱然霜降后,情深依無怨!
    逸塵居士閱讀 349評論 0 0