iOS 關於瀑布流3 0的實現

2021-07-31 22:32:11 字數 3676 閱讀 8514

只是說明實現瀑布流的方法, 以及自定義layout布局,其他多餘事情本文不提。

先看專案框架:

1.zjjcustommodel 類的內容

#import @inte***ce zjjcustommodel : nsobject

+ (nsarray *)customgettheimagesarray;

@end

#import "zjjcustommodel.h"

@implementation zjjcustommodel

+ (nsarray *)customgettheimagesarray

return arr;

}@end

2.自定義cell(zjjcustomcollectioncell)類

#import @inte***ce zjjcustomcollectioncell : uicollectionviewcell

- (id)initwithframe:(cgrect)frame;

// 自定義 cell 的 label 和 image

@property (nonatomic,strong) uilabel *label;

@property (nonatomic,strong) uiimageview *imageview;

// 名字和文字名字

@property (nonatomic,copy)    nsstring *imagename;

@property (nonatomic,copy)    nsstring *labelname;

@end

#import "zjjcustomcollectioncell.h"

@implementation zjjcustomcollectioncell

- (id)initwithframe:(cgrect)frame

return self;

}- (void)setimagename:(nsstring *)imagename

- (void)setlabelname:(nsstring *)labelname

@end

3.viewcontroller 類

// 重用cell識別符號

#define   reuse_cell   @"cell"

#import "viewcontroller.h"

#import "zjjcustomlayout.h"

#import "zjjcustommodel.h"

#import "zjjcustomcollectioncell.h"

@inte***ce viewcontroller ()

@end

@implementation viewcontroller

- (void)viewdidload

#pragma mark - 基礎配置

- (void)creatview

#pragma mark - 獲取資料,填充資料來源

- (void)arrayinfo

#pragma mark - collectionview **方法

- (nsinteger)collectionview:(uicollectionview *)collectionview numberofitemsinsection:(nsinteger)section

- (__kindof uicollectionviewcell *)collectionview:(uicollectionview *)collectionview cellforitematindexpath:(nsindexpath *)indexpath

- (nsinteger)numberofsectionsincollectionview:(uicollectionview *)collectionview

- (void)collectionview:(uicollectionview *)collectionview didselectitematindexpath:(nsindexpath *)indexpath

- (void)didreceivememorywarning

@end

4.zjjcustomlayout 類

#import @inte***ce zjjcustomlayout : uicollectionviewflowlayout

@property (nonatomic, assign)   nsinteger itemcount; //元素個數

@end

#define   screen_w    [uiscreen mainscreen].bounds.size.width

#define   screen_h    [uiscreen mainscreen].bounds.size.height

#import "zjjcustomlayout.h"

@inte***ce zjjcustomlayout ()

@end

@implementation zjjcustomlayout

- (void)preparelayout else if (i == 1) else if (i == 2) else else

}else else }}

if (columnrecord == 0) else if (columnrecord == 1) else

nsindexpath *indexpath = [nsindexpath indexpathforitem:i insection:0];

uicollectionviewlayoutattributes *attributes = [uicollectionviewlayoutattributes layoutattributesforcellwithindexpath:indexpath];

attributes.frame = cgrectmake(itemx, itemy, _itemw, _itemh);

[_attributesmarray addobject:attributes];

}}- (nullable nsarray<__kindof uicollectionviewlayoutattributes> *)layoutattributesforelementsinrect:(cgrect)rect

- (cgsize)collectionviewcontentsize else

return cgsizemake(screen_w, totalheight);

}@end

到此,就實現wate***ll了,效果如下

iOS 實現 瀑布流介面

前陣子需要做乙個需求,在iphone上實現瀑布流效果。第一眼看到這個需求,我想到的兩種解決方案分別是 1.使用多個uitableview,然後控制它們同時滾動 2.使用乙個uiscrollview,然後參考uitableview的實現自己做乙個符合需求並且以後可以重用的控制項。我首先嘗試了第乙個方案...

iOS 瀑布流的實現方法

瀑布流 又稱瀑布式流式布局,是比較流行的一種頁面布局,視覺表現為參差不齊的多欄布局,可以參考 或者蘑菇街的客戶端。隨著頁面的滾動,這種布局會不斷的載入資料並附加到當前尾部。實現思路 ios上可以使用uiscrollview來實現,假設要展示三列,則每一列可以放乙個uiview,做為容器。載入到資料後...

關於瀑布流

鑑於現今瀑布流的流行,上次面試的時候又遇到了這個問題,可我確實沒有實現過,一時問起確實只知道用float left的方式。1.固定列寬和列數,列設定float left,乙個列就是乙個內容塊,載入內容就選擇載入到各列中 2.使用css3的多列布局 前兩種方式比較簡單,而所謂最大的缺陷也就是列數目已確...