iOS 版面實現記錄三

2021-07-03 01:07:08 字數 3164 閱讀 4733

實現該介面花了點功夫。

基本思路是通過實現 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最小間距

headerreferencesizeheader大小

sectioninsetsection 的上左下右邊距,不包括 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手勢監聽在資...