UICollectionViewFlowLayout自定义

写一个我们自己的类继承UICollectionViewFlowLayout。然后需要实现四个方法

-(CGSize)collectionViewContentSize

{

CGFloat height=  ceil([[self collectionView]  numberOfItemsInSection:0]/5)*SCREEN_WIDTH/2;

return  CGSizeMake(SCREEN_WIDTH, height);

}//返回contentsize的总大小

//自定义布局必须YES

-(BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds

{

return YES;

}

- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)path{}//返回每个cell的布局属性

-(NSArray*)layoutAttributesForElementsInRect:(CGRect)rect

{

NSArray *array = [super layoutAttributesForElementsInRect:rect];

NSMutableArray* attributes = [NSMutableArray array];

for (NSInteger i=0 ; i < [array count]; i++) {

NSIndexPath* indexPath = [NSIndexPath indexPathForItem:i inSection:0];

[attributes addObject:[self layoutAttributesForItemAtIndexPath:indexPath]];

}

return attributes;

}//返回所有cell的布局属性

文/Fengxinliju(简书作者)
原文链接:http://www.jianshu.com/p/b55c6040ee59
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

时间: 2024-12-25 15:09:43

UICollectionViewFlowLayout自定义的相关文章

Objective-c——UI基础开发第十二天(相册展示)

一.知识点 模仿新特性 UICollectionViewFlowLayout自定义布局 相册 瀑布流(淘宝购物之类的 二.复习 a.UICollectionView 和 tableview共享一套API 不同: 1.实例化collectionView必须传入一个非空的layout布局对象 layout:主要针对 cell的各个属性操控(UICollectionViewLayout 啥都没有只是定义了必须实现的方法/UICollectionViewFlowLayout 是上面的子类) 2.必须要注

UICollectionView集合视图的概念

如何创建UICollectionView 集合视图的布局UICollectionViewFlowLayout 自定义cell 布局协议UICollectionViewDelegateFlowLayout UICollectionView与UITableView的实现类似,都需要设置delegate和dataSource 在collectionView中,cell的布局比tableView要复杂,需要使用一个类来描述集合视图的布局---UICollectionViewLayout->UIColle

UICollectionView 简单使用

显示数据列表 大家通常使用的是UITableView 不用说TableView 是大家的首选.在iOS6之前这也是必选.但是伴随着APP的成长一起都在变化目前更多的呈现一种块状的显示效果.之前的行式显示效果大家都已见的太多了.接下来大家和我一起来看看另外的一种控件 - UICollectionView 1.实例化2.自动布局3.横向4.纵向5.协议6.Cell 一.实例化   UICollectionView 的实例化和其它控件存在一个不同的地方.   init   initWithFrame:

Swift - 使用CollectionView实现图片Gallery画廊效果(左右滑动浏览图片)

1,效果图 (1)图片从左至右横向排列(只有一行),通过手指拖动可以前后浏览图片. (2)视图滚动时,每张图片根据其与屏幕中心距离的不同,显示尺寸也会相应地变化.越靠近屏幕中心尺寸就越大,远离屏幕中心的就逐渐变小. (3)滑动结束后,会有位置自动修正的功能.即将当前最靠近屏幕中点的图片移动到正中央. (4)点击图片则将该图片删除,点击空白处会在最开始的位置插入一张图片.不管新增还是删除都有动画效果. (5)点击导航栏上的"切换"按钮,可以在普通的流式布局和我们自定义的画廊布局间相互切换

自定义流布局(UICollectionViewFlowLayout的基本使用)

最终显示的效果图 思路: 1.UICollection的基本设置,并且创建一个继承自UICollectionViewFlowLayout的类.(不能是UICollectionViewLayout,否则全部都需要自定义) 2.在UICollectionViewFlowLayout类中完成四步 - 1)调用prepareLayout方法进行基本的布局(cell在最左面的时候是在正中间),不能在init中布局,因为设置collectionView尺寸是在viewDidLoad中,而 init在它之前调

Subclass UICollectionViewFlowLayout,自定义流布局

需求:为实现第一行显示一个,第二行以后显示两个 方案1:用系统自带的流布局,实现的效果是,若第二行只有一个,则系统默认会居中显示,不是左对齐(如下图),不符合项目要求. 方案2:自定义系统的UICollectionViewFLowLayout,主要代码如下, 只要设置了cell的LayoutAttribute之后,supplementaryView的,用super的 subclass of UICollectionViewFlowLayout - (BOOL)shouldInvalidateLa

iOS9UICollectionView自定义布局modifying attributes returned by UICollectionViewFlowLayout without copying them

UICollectionViewFlowLayout has cached frame mismatch This is likely occurring because the flow layout subclass MyLineLayout is modifying attributes returned by UICollectionViewFlowLayout without copying them - (NSArray *)layoutAttributesForElementsIn

实现类似微信表情包横向滚动翻页的功能,运用UICollectionView,自定义UICollectionViewFlowLayout,cell左右排版 ,支持多组Cell实现。

结合:https://blog.csdn.net/qiuhaozhou/article/details/54582741 下面是我所要的样式的实现的代码: .h文件如下: #import <UIKit/UIKit.h> @interface JYECircleFlowLayout : UICollectionViewFlowLayout //  一行中 cell 的个数 @property (nonatomic,assign) NSUInteger itemCountPerRow; //   

IOS自定义日历控件的简单实现(附思想及过程)

因为程序要求要插入一个日历控件,该空间的要求是从当天开始及以后的六个月内的日历,上网查资料基本上都说只要获取两个条件(当月第一天周几和本月一共有多少天)就可以实现一个简单的日历,剩下的靠自己的简单逻辑就OK了,下面开始自己从开始到完成的整个过程 1,首先做NSDate类目,扩展一些方法让日期之间转换更加方便 #import <Foundation/Foundation.h> @interface NSDate (LYWCalendar) #pragma mark - 获取日 - (NSInte