ios開發--橫向流水布局實現
效果展示圖;
原始碼:1// photocell.h
2// 自定義流水布局
3//
6// 7
8#import 9
10@inte***cephotocell : uicollectionviewcell11
12@property(nonatomic, strong) uiimage *image;13
14@end
1516***************=兩個檔案的分水嶺***************===
17//
18// photocell.m
19// 自定義流水布局
20//
21// created by xmg on 16/1/15.
23//
2425
2627#import "photocell.h"
2829@inte***cephotocell ()
30@property(weak, nonatomic) iboutletuiimageview *imageview;
31@end
3233@implementationphotocell34
35- (void)awakefromnib
3839- (void)setimage:(uiimage *)image40
46 47@end
1 //最後的關鍵**:2 // photolayout.h
3 // 自定義流水布局
4 //
5 // created by xmg on 16/1/15.
7 //
8 9 #import 10
11 @inte***ce photolayout : uicollectionviewflowlayout
12 13 @end
14 15
16 **********====兩個檔案的分水嶺***************=
17 18 //
19 // photolayout.m
20 // 自定義流水布局
21 //
22 // created by xmg on 16/1/15.
24 //
25 26 #import "photolayout.h"
27 #define xmgscreenw [uiscreen mainscreen].bounds.size.width
28 @implementation photolayout
29 30 // 複雜效果: 分析 ->
31 // cell離中心點距離越近(delta越小),就越大,越遠,就越小
32 // 距離中心點
33 // 知道哪些cell需要縮放:顯示出來的cell才需要進行布局
34 35
36 37 // 給定乙個區域,就返回這個區域內所有cell布局
38 - (nullable nsarray<__kindof uicollectionviewlayoutattributes> *)layoutattributesforelementsinrect:(cgrect)rect
39 57
58 return attributes;
59 }
60 61 // invalidate:重新整理
62 // 是否允許在拖動的時候重新整理布局
63 // 謹慎使用,yes:只要一滾動就會布局
64 - (bool)shouldinvalidatelayoutforboundschange:(cgrect)newbounds
65 68
69 // 確定最終顯示位置
70 // 什麼時候呼叫:手動拖動uicollectionview,當手指離開的時候,就會呼叫
71 // 作用:返回uicollectionview最終的偏移量
72 // proposedcontentoffset:最終的偏移量
73 - (cgpoint)targetcontentoffsetforproposedcontentoffset:(cgpoint)proposedcontentoffset withscrollin**elocity:(cgpoint)velocity
74 92 }
93
94 proposedcontentoffset.x += mindelta;
95
96 if (proposedcontentoffset.x < 0)
99 100 return proposedcontentoffset;
101 }
102
103 @end
1 //2 // viewcontroller.m
3 // 自定義流水布局
4 //
5 // created by xmg on 16/1/15.
7 //
8 9 #import "viewcontroller.h"
10 #import "photocell.h"
11 #import "photolayout.h"
12 13 /*
14 // a , b , c a = b + c
15 // int d = (2,3,5);
16
17 // 高聚合,低耦合
18 int a = ();
24 */
25 26 /*
27 uicollectionview注意點:
28 1.初始化必須要傳入布局,(流水布局:九宮格布局)
29 2.uicollectionviewcell必須要註冊
30 3.必須自定義cell
31 */
32 33
34 #define xmgscreenw [uiscreen mainscreen].bounds.size.width
35 static nsstring * const id = @"cell";
36 @inte***ce viewcontroller ()37
38 @end
39 40 @implementation viewcontroller
41 42 // 思路:**瀏覽布局:流水布局,在拖到的時候,在原來基礎上重新計算下布局 -> 在原來功能上再新增功能,自定義流水布局
43 - (void)viewdidload );
60
61 // 建立uicollectionview:預設為黑色
62 uicollectionview *collectionview = ();
74
75 // 註冊cell
76 [collectionview registernib:[uinib nibwithnibname:nsstringfromclass([photocell class]) bundle:nil] forcellwithreuseidentifier:id];
77 }
78 79
80 #pragma mark -uicollectionviewdatasource
81 // 返回有多少個cell
82 - (nsinteger)collectionview:(uicollectionview *)collectionview numberofitemsinsection:(nsinteger)section
83 86
87 // 返回每個cell長什麼樣
88 - (uicollectionviewcell *)collectionview:(uicollectionview *)collectionview cellforitematindexpath:(nsindexpath *)indexpath
89 99
100 @end
IOS開發 橫向流水布局實現
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...
程式開發應從橫向實現(而不是縱向實現)
也許有些人早就是這樣做了,也許有些人還在和我一樣,也許有些人認為這樣挺好的,總之我認為這是我要改進的地方。程式開發應首先統觀全域性,然後再逐個深入。舉例 要實現某一功能,在開發過程中,往往需要將功能分成多個模組,每個模組下有眾多子模組,再拆分成多個相互配合函式,然後是子函式,巢狀函式等等。這個設計過...
IOS專案開發布局三
ios專案開發布局三 上次講到專案資料夾的模版,下面我開始以側邊欄為例,繼續講框架。首先看檔案的結構布局圖如下 1.在libs的slideviewcontroller資料夾下新增側邊欄第三方檔案 3.在constants檔案中定義一些全域性的巨集 4.demviewcontroller.h和demv...