关于 collectionView的layout布局方法:

设置cell的间距,行间距,组与组之间的间距,都是在layout里面来设置.

包括,滚动方向.

-(void)prepareLayout

[super prepareLayout]

//最小行间距

self.minimumLineSpacing =1;

//最小cell间距

self.minimumInteritemSpacing =1;

//组与组之间的间距

self.sectionInset =UIEdgeInsetsMake(0, 0, 20, 0);

}

设置cell的大小有两种方法

一种在layout布局里面来通过方法,设置cell的大小

方法名称比较长,只要记住layout的关键字返回值是一个数组

-(NSArray<UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect{

NSArray *attrs =[super layoutAttributesForElementsInRect:rect];

for (UICollectionViewLayoutAttributes *attr in attrs) {

//如果是第一组,进行操作..

//获取frame

CGRect frame = attr.frame;

CGFloat height =100;

CGFloat width =(self.collectionView.frame.size.width -3)/4;

if (attr.indexPath.section ==1) {

//frame = CGRectMake(0, 0, self.collectionView.frame.size.width, 100);//不要修改他的位置,只需要修改他的大小

//修改frame

frame.size =CGSizeMake(self.collectionView.frame.size.width, height);

}else{

frame.size =CGSizeMake(width, height);

}

//赋值回去

attr.frame =frame;

}

return attrs;

}

第二种方法:

遵守协议

//实现代理方法

-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{

CGFloat height = 100;

CGFloat width =(collectionView.frame.size.width-3)/4;

if (indexPath.section ==1) {

return CGSizeMake(collectionView.frame.size.width, 120);

}

return CGSizeMake(width, height);

}

-(void)prepareLayout{

[super prepareLayout];

//最小行间距

self.minimumLineSpacing =1;

//最小cell间距

self.minimumInteritemSpacing =1;

//组与组之间的间距

self.sectionInset =UIEdgeInsetsMake(0, 0, 20, 0);

CGFloat height =100;

CGFloat width =(self.collectionView.frame.size.width -3)/4;

self.itemSize =CGSizeMake(width, height);

}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

//上面的布局问题:需要初始时候先指定一个大小. 当初始位置有了大小,让布局,按照这个大小来进行布局

//没有给大小,他会按照默认的大小,50,50来计算,所以会导致cell直接压在一起.

-(NSArray<UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect{

NSArray *attrs =[super layoutAttributesForElementsInRect:rect];

for (UICollectionViewLayoutAttributes *attr in attrs) {

//如果是第一组,进行操作..

//获取frame

CGRect frame = attr.frame;

if (attr.indexPath.section ==1) {

frame.size =CGSizeMake(self.collectionView.frame.size.width, 100);

}

//赋值回去

attr.frame =frame;

}

return attrs;

}

@end

collectionView布局的更多相关文章

  1. collectionView布局原理及瀑布流布局方式

    一直以来都想研究瀑布流的具体实现方法(起因是因为一则男女程序员应聘的笑话,做程序的朋友应该都知道).最近学习到了瀑布流的实现方法,瀑布流的实现方式有多种,这里应用collectionView来重写其U ...

  2. Dynamic支持CollectionView布局 、 MotionEffects特效 、 BlurImage效果 、 TextKit

    1 使用UIDynamicAnimator对集合视图进行布局 1.1 问题 UIKit Dynamic动力模型一个非常有趣的用途就是影响集合视图的布局,可以给集合视图的布局添加各种动力行为,使其产生丰 ...

  3. collectionView布局原理及瀑布流布局方式--备用

    最近学习到了瀑布流的实现方法,瀑布流的实现方式有多种,这里应用collectionView来重写其UICollectionViewLayout进行布局是最为简单方便的.但再用其布局之前必须了解其布局原 ...

  4. 关于collectionview布局的坑

    不知道写了多少次collectionview,步了很多坑,现在看来虽然达到了自己想要的结果,却不知道其中所以然.还是总结一下,免得再走弯路: 场景是这样的,我要定制一个显示选择图片的排列,想要实现横向 ...

  5. iOS开发 tableView点击下拉扩展 + 内嵌collectionView上传图片效果

    ---恢复内容开始--- //需要的效果 1.设置window的根视图控制器为一个UITableViewController #import "AppDelegate.h"#imp ...

  6. iOS (UIButton封装)仿糯米首页缩放“按钮”效果

    前言 过年期间,少不了各种聚会,当下聚会大多数情况下自然是团购,然后就是用各种APP...使用度娘糯米时(不是广告,不是广告,不是广告!),偶然注意到了它的首页中一个有意思的效果,就是那些“按钮”点击 ...

  7. 实现iOS项目一款用swift实现的应用top源码

    Top 后台 Swift版本Ios 8 / iPhone 5S适配这边有个登陆,如果你们想测试的话,可以用这个账号, 账号:18868879362 密码:420562   源码下载: http://c ...

  8. 第四十六篇、UICollectionView广告轮播控件

    这是利用人的视觉错觉来实现无限轮播,UICollectionView 有很好的重用机制,这只是部分核心代码,后期还要继续完善和代码重构. #import <UIKit/UIKit.h> # ...

  9. 自定制emoji替换系统的emoji键盘

    一.关于emoji表情 随着iOS系统版本的升级,对原生emoji表情的支持也越来越丰富.emoji表情是unicode码中为表情符号设计的一组编码,当然,还有独立于unicode的另一套编码SBUn ...

随机推荐

  1. 安卓 webview背景色的设置

    第一步:webview的xml属性设置:android:layerType = "software"(关闭webview硬件加速,颜色设置才可以起效果) 第二步:webview所在 ...

  2. 安卓弹出对话框——AlertDialog(二)

    在Android中,启动一个对话框有三种方式: 1.定义一个新的activity,并将其主题设置为对话框风格 2.使用AlertDialog类,并且显示它 3.使用 Android的Dialog类的子 ...

  3. 那些年我们一起改过的bug

    ORA-01861: 文字与格式字符串不匹配 ORA-00936: 缺失表达式 ORA-01810 格式代码出现两次 ORA-01722: 无效数字 无效的列索引

  4. OC--类型为ID 的类的名称

    NSString *str = [[view class] description];

  5. centos 6.5下编译安装、配置高性能服务器Nginx

    1.nginx是什么? Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,由俄罗斯的程序设计师Igor Sysoev所开发,其特点是占有内存少,并发能力 ...

  6. JAVA语言中冒号的用法

    近来由于本人要介入android平台的开发,所以就买了本JAVA语言的书学习.学习一段时间来,我的感觉是谭浩强就是厉害,编写的<C编程语言>系列丛书不愧是经典.书中对C语言的介绍既系统又全 ...

  7. mysql 子查询优化

    今天用到要查询七天内都没有装机的门店信息,首先想到了用not in,先把装机的userid查出来,然后再id not in,但是这样就必须使用子查询,数据量少还可以,数据量大了的话,肯定效率特别低,因 ...

  8. SVG的Transform使用

    SVG的Transform使用: <%@ page language="java" contentType="text/html; charset=UTF-8&qu ...

  9. Servlet RequestDispatcher需要注意的情况

    Servlet RequestDispatcher需要注意的情况: 如果使用getServletContext().getRequestDispatcher("/a.do")得到R ...

  10. Apriori算法原理总结

    Apriori算法是常用的用于挖掘出数据关联规则的算法,它用来找出数据值中频繁出现的数据集合,找出这些集合的模式有助于我们做一些决策.比如在常见的超市购物数据集,或者电商的网购数据集中,如果我们找到了 ...