IOS開發 橫向流水布局實現

2021-09-23 21:23:17 字數 4241 閱讀 2788

//

// viewcontroller.m

// 自定義流水布局

//// created by xmg on 16/1/15.

//#import "viewcontroller.h"

#import "photocell.h"

#import "photolayout.h"

/* // a , b , c a = b + c

// int d = (2,3,5);

// 高聚合,低耦合

int a = ();

*//*

uicollectionview注意點:

1.初始化必須要傳入布局,(流水布局:九宮格布局)

2.uicollectionviewcell必須要註冊

3.必須自定義cell

*/#define xmgscreenw [uiscreen mainscreen].bounds.size.width

static nsstring * const id = @"cell";

@inte***ce viewcontroller ()@end

@implementation viewcontroller

// 思路:**瀏覽布局:流水布局,在拖到的時候,在原來基礎上重新計算下布局 -> 在原來功能上再新增功能,自定義流水布局

- (void)viewdidload );

// 建立uicollectionview:預設為黑色

uicollectionview *collectionview = ();

// 註冊cell

[collectionview registernib:[uinib nibwithnibname:nsstringfromclass([photocell class]) bundle:nil] forcellwithreuseidentifier:id];

}#pragma mark -uicollectionviewdatasource

// 返回有多少個cell

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

// 返回每個cell長什麼樣

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

@end

前言:因為時間緣故,很少進行通俗易懂的演算法思路講解,這裡先展示動態效果,然後後面的內容我就直接上關鍵原始碼了。

效果展示圖;

原始碼:

//  photocell.h

// 自定義流水布局

//// created by xmg on 16/1/15.

//#import @inte***ce photocell : uicollectionviewcell

@property (nonatomic, strong) uiimage *image;

@end

***************=兩個檔案的分水嶺***************===

//// photocell.m

// 自定義流水布局

//// created by xmg on 16/1/15.

//26

#import "photocell.h"

@inte***ce photocell ()

@property (weak, nonatomic) iboutlet uiimageview *imageview;

@end

@implementation photocell

- (void)awakefromnib

- (void)setimage:(uiimage *)image

@end

// photolayout.h

// 自定義流水布局

//// created by xmg on 16/1/15.

//#import @inte***ce photolayout : uicollectionviewflowlayout

@end

**********====兩個檔案的分水嶺***************=

//// photolayout.m

// 自定義流水布局

//// created by xmg on 16/1/15.

//#import "photolayout.h"

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

@implementation photolayout

// 複雜效果: 分析 ->

// cell離中心點距離越近(delta越小),就越大,越遠,就越小

// 距離中心點

// 知道哪些cell需要縮放:顯示出來的cell才需要進行布局

// 給定乙個區域,就返回這個區域內所有cell布局

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

return attributes;

}// invalidate:重新整理

// 是否允許在拖動的時候重新整理布局

// 謹慎使用,yes:只要一滾動就會布局

- (bool)shouldinvalidatelayoutforboundschange:(cgrect)newbounds

最後的關鍵**:

//

// viewcontroller.m

// 自定義流水布局

//// created by xmg on 16/1/15.

//#import "viewcontroller.h"

#import "photocell.h"

#import "photolayout.h"

/* // a , b , c a = b + c

// int d = (2,3,5);

// 高聚合,低耦合

int a = ();

*//*

uicollectionview注意點:

1.初始化必須要傳入布局,(流水布局:九宮格布局)

2.uicollectionviewcell必須要註冊

3.必須自定義cell

*/#define xmgscreenw [uiscreen mainscreen].bounds.size.width

static nsstring * const id = @"cell";

@inte***ce viewcontroller ()@end

@implementation viewcontroller

// 思路:**瀏覽布局:流水布局,在拖到的時候,在原來基礎上重新計算下布局 -> 在原來功能上再新增功能,自定義流水布局

- (void)viewdidload );

// 建立uicollectionview:預設為黑色

uicollectionview *collectionview = ();

// 註冊cell

[collectionview registernib:[uinib nibwithnibname:nsstringfromclass([photocell class]) bundle:nil] forcellwithreuseidentifier:id];

}#pragma mark -uicollectionviewdatasource

// 返回有多少個cell

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

// 返回每個cell長什麼樣

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

@end

iOS開發 橫向流水布局實現

ios開發 橫向流水布局實現 效果展示圖 原始碼 1 photocell.h 2 自定義流水布局 3 6 7 8 import 9 10 inte cephotocell uicollectionviewcell11 12 property nonatomic,strong uiimage imag...

程式開發應從橫向實現(而不是縱向實現)

也許有些人早就是這樣做了,也許有些人還在和我一樣,也許有些人認為這樣挺好的,總之我認為這是我要改進的地方。程式開發應首先統觀全域性,然後再逐個深入。舉例 要實現某一功能,在開發過程中,往往需要將功能分成多個模組,每個模組下有眾多子模組,再拆分成多個相互配合函式,然後是子函式,巢狀函式等等。這個設計過...

IOS專案開發布局三

ios專案開發布局三 上次講到專案資料夾的模版,下面我開始以側邊欄為例,繼續講框架。首先看檔案的結構布局圖如下 1.在libs的slideviewcontroller資料夾下新增側邊欄第三方檔案 3.在constants檔案中定義一些全域性的巨集 4.demviewcontroller.h和demv...