一、自定义Flowlayout
UICollectionViewFlowLayout类是最重要的,整个横线就是从这个类里控制的,这里的横线是个横线的 图片加载到UICollectionview的decoration View上的decoration View
-(void)prepareLayout
实例化视图或更新视图或者查询视图信息之前,被自动调用,设定一些必要的layout的结构和初始需要参数等。
- (NSArray*)layoutAttributesForElementsInRect:(CGRect)rect
1、返回在rect中的所有的元素的布局属性,是包含UICollectionViewLayoutAttributes的array.
2、UICollectionViewLayoutAttributes可以是cell,追加视图或装饰视图的信息,通过不同的UICollectionViewLayoutAttributes初始化方法可以得到不同类型的UICollectionViewLayoutAttribures:
- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath
返回对应于indexPath的位置的cell的布局属性
- (UICollectionViewLayoutAttributes *)layoutAttributesForDecorationViewOfKind:(NSString *)decorationViewKind atIndexPath:(NSIndexPath *)indexPath
返回对应于indexPath的位置的装饰视图的布局属性,没有装饰视图可以不重载此方法
代码:
(重点是自定义的FlowLayout)
GridLayout.h
<pre name="code" class="objc">//gridView视图对应的UICollectionViewLayout,向UICollectionView提供布局信息,
//包括cell的布局信息,也包括Supplementary Views(追加视图,类似与headerView或者FooterView)和Decoration Views(装饰视图,用作背景展示)的布局信息。
@interface GridLayout : UICollectionViewFlowLayout
@property (nonatomic, strong) NSDictionary *shelfRects;
- (id)initForIpad;
- (id)initForIphone;
@end
GridLayout.m
#import "GridLayout.h"
#import "ShelfView.h"
#import "GridLayoutAttributes.h"
@implementation GridLayout
/**
为Ipad初始化
@author maguang
@param parameter
@return result
*