實現該介面花了點功夫。
基本思路是通過實現 uicollectionviewdelegateflowlayout 的**方法
- (cgsize)collectionview:(uicollectionview *)collectionview layout:(uicollectionviewlayout*)collectionviewlayout sizeforitematindexpath:(nsindexpath *)indexpath;
以10個一迴圈返回 item 大小。另外通過**方法
- (uicollectionviewcell *)collectionview:(uicollectionview *)collectionview cellforitematindexpath:(nsindexpath *)indexpath;
同樣以10個一迴圈返回 item 的可供服用的樣式。
配置 uicollectionview
- (void)initcontentcollectionview
其中self.contentcollectionview.alwaysbouncevertical = yes;
是為了避免資料過少導致無法下拉重新整理。
[self.contentcollectionview registerclass:[viewhomemenucollectioncell
class] forcellwithreuseidentifier:@"cell"];
[self.contentcollectionview registerclass:[viewhomemenucollectioncelltext
class] forcellwithreuseidentifier:@"celltext"];
[self.contentcollectionview registerclass:[viewhomemenucollectioncellimage
class] forcellwithreuseidentifier:@"cellimage"];
[self.contentcollectionview registerclass:[uicollectionreusableview
class] forsupplementaryviewofkind:uicollectionelementkindsectionheader
withreuseidentifier:@"headadview"];
註冊三個 cell 及作為 headview 的uicollectionreusableview
uicollectionview 的 content 布局抽象成為乙個 uicollectionviewlayout 物件。 uicollectionviewflowlayout 則是 uicollectionviewlayout 的乙個子類。
layout.itemsize = cgsizemake(cellweight, cellheight);
可以實現設定 cell 的大小。另外還有乙個屬性 estimateditemsize 則是 ios 8.0 之後實現動態修改 cell 高寬的關鍵。
minimumlinespacing
最小行距
minimuminteritemspacing
最小間距
headerreferencesize
header大小
sectioninset
section 的上左下右邊距,不包括 uicollectionreusableview
self.contentcollectionview.contentinset = collectioncontentinset;
設定 collectionview content邊距。
#pragma mark - uicollectionviewdelegateflowlayout
-(cgsize)collectionview:(uicollectionview *)collectionview layout:(uicollectionviewlayout *)collectionviewlayout sizeforitematindexpath:(nsindexpath *)indexpath
}
-(uicollectionviewcell *)collectionview:(uicollectionview *)collectionview cellforitematindexpath:(nsindexpath *)indexpath
case
1: case
5: case
6: default: }//
/* viewhomemenucollectioncell * cell = [collectionview dequeuereusablecellwithreuseidentifier:@"cell"
forindexpath:indexpath];
viewhomemenucollectioncelltext * celltext = [collectionview dequeuereusablecellwithreuseidentifier:@"celltext"
forindexpath:indexpath];
viewhomemenucollectioncellimage * cellimage = [collectionview dequeuereusablecellwithreuseidentifier:@"cellimage"
forindexpath:indexpath];
nsdictionary *dct = self.menuresult[indexpath.row];
nslog(@"%ld",indexpath.row%10);
switch (indexpath.row%10) */
}
/**/注釋當中的方法因為每次都復用三個 cell,造成記憶體消耗不斷增加。改為現在使用的方法則有改善。 iOS 版面實現記錄四
同樣使用 uicollectionview 來實現,自定義乙個 uicollectionviewlayout 即可。uicollectionview 可以看作是具備復用控制項的 scrollview。自定義則是通過某些演算法得到每乙個控制項在 content 上的位置,並設定它具備的形態。該 uic...
iOS 除錯問題記錄 三
問題原因 工程提示 warning directory not found for option 這種提示,通常是由於新增了第三方sdk,但是後來改了個名字或者去掉了sdk,但是在 build settings search paths library search paths 中仍然沒有刪除掉對應...
ios 經驗記錄
日下內容為日常開發中遇到的問題解決的個人經驗記錄 1.ios 用xib折騰cell時候 整個cell不能命名為contentview 會與系統的contentview衝突 一般命名為viewcell.使用xib時候 命名不能與所在類命名衝突 否則會出現各種奇怪事情。2.tableview手勢監聽在資...