//
// 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...