一、知识点

模仿新特性

UICollectionViewFlowLayout自定义布局

相册

瀑布流(淘宝购物之类的

二、复习

a、UICollectionView 和 tableview共享一套API

不同:

1、实例化collectionView必须传入一个非空的layout布局对象 layout:主要针对 cell的各个属性操控(UICollectionViewLayout 啥都没有只是定义了必须实现的方法/UICollectionViewFlowLayout 是上面的子类)

2、必须要注册cell tableviewcell 可以在返回cell 的时候做为空判断,但是这个collectionviewcell必须注册

xib :必须设置重用标识符,且registerNib 如果regsterClass的话,里面的东西是看不见的

class :register

storyboard:必须设置重用标识符

b、flow layout

itemSize

sectionInsets 设置组的内边距

scrollDirection

minimumlineSpacing

minimumInteritemSpacing

c、组头和组尾

必须通过代理方法进行重用返回(kind属性分两种、如果通过storyboard 显示,必须要设置重用标识符,不然代理方法不会被调用

1、悬浮效果,sectionHeaderPinToVisibleBounds

sectionFooterPinToVisibleBounds

2、设置组头或组尾的size

headerReferencesSize

FooterReferencesSize

三、实现相册展示的放大放小

主要在layout中布局继承自 UICollectionViewFlowLayout

1、注意:为什么直接在layout的init方法中,初始化cell 的itemSize会不能实现

- (instancetype)init {

if (self = [super init]) {   //在此创建cell的大小等属性设置 }    return self;}

原因:

在实例化layout的时候, collectionView还没有实例化, 所以在这个方法里,实例化的时候取不到collectionView的frame

解决方案:在prepareLayout [super prepareLayout]方法中实现并定义

2、重点:怎么设置Cell中滚动过来的图片大小(需要通过- (NSArray<UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect  所有cell的属性设置

// 1. 取出所有的item 的 UICollectionViewLayoutAttributes

NSArray *superAttributes = [super layoutAttributesForElementsInRect:rect];

3、刷新布局

#pragma mark -  当屏幕的可见范围发生变化的时候, 要重新刷新布局

- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds {

return YES;

}

Objective-c——UI基础开发第十二天(相册展示)的更多相关文章

  1. Objective-c——UI基础开发第十一天(UICollectionView)

    一.知识点 1.UICollectionView的dataSource .delegate 2.UICollectionView多组数据和单组数据的展示 3.UICollectionView.UICo ...

  2. Objective-c——UI基础开发第十天(自动布局)

    一.autoresizing 的使用(了解) 只能参照父控件 1.实现横竖屏幕切换,不能把控件的frame血丝,需要进行屏幕适配 2.需要参照父控件 use auto layout禁用 才会出现aut ...

  3. Objective-c——UI基础开发第九天(QQ好友列表)

    一.知识点: 1.双模型的嵌套使用 2.Button的对齐方式 3.优化UITableView的加载 4.layoutSubview的使用 5.cell的折叠代理 二.双模型的嵌套定义: 注意是将se ...

  4. Objective-c——UI基础开发第八天(QQ聊天界面)

    一.知识点: QQ聊天界面 双模型的使用(dataModel和frameModel) UITextField的使用 通知的使用 拉伸图片的两种方法(slicing/image对象的resizeable ...

  5. Objective-c——UI基础开发第七天(自定义UITableView)

    一.梗概: 1.自定义:headerView,footerVie,Cell等 2.双模型(遵循单一原则,类或模型实现的功能尽量单一) 3.计算文本的方法(针对不同文本内容而设置的宽高等) 4.设置fo ...

  6. Objective-c——UI基础开发第六天(UITableView)

    一.UITableView的简单使用 显示要素: 1.显示多少给区组 2.显示多少行数据 3.每行显示什么内容 代理不会提醒你有什么方法没调用,但是UITableViewDataSource会 1)用 ...

  7. iOS开发UI基础—手写控件,frame,center和bounds属性

    iOS开发UI基础—手写控件,frame,center和bounds属性 一.手写控件 1.手写控件的步骤 (1)使用相应的控件类创建控件对象 (2)设置该控件的各种属性 (3)添加控件到视图中 (4 ...

  8. IOS开发UI基础--数据刷新

    IOS开发UI基础--数据刷新 cell的数据刷新包括下面几个方面 加入数据 删除数据 更改数据 全局刷新方法(最经常使用) [self.tableView reloadData]; // 屏幕上的全 ...

  9. 转发-UI基础教程 – 原生App切图的那些事儿

    UI基础教程 – 原生App切图的那些事儿 转发:http://www.shejidaren.com/app-ui-cut-and-slice.html 移动APP切图是UI设计必须学会的一项技能,切 ...

随机推荐

  1. 关于jQuery源码分析

    http://www.w3ctech.com/topic/256 jQuery源码剖析(一)——概览&工具方法

  2. golang strings

    package main import s "strings" //别名 import ( "fmt" ) var p = fmt.Println func m ...

  3. Git实现从本地添加项目到远程仓库

    Git是现在最流行的版本控制系统之一了,今天也试试了,成功了上传了远程仓库,接下来看看我是怎么做的. (ps:七牛抓取不到图片,请移步:http://blog.csdn.net/u011043843/ ...

  4. 转:画图解释 SQL join 语句

    画图解释 SQL join 语句 我认为 Ligaya Turmelle 的关于SQL联合(join)语句的帖子对于新手开发者来说是份很好的材料.SQL 联合语句好像是基于集合的,用韦恩图来解释咋一看 ...

  5. fsimage 和 edits log

    standby NN每隔一段时间(由参数dfs.ha.tail-edits.period决定,默认是60s)去检查Journal node上新的Edits log文件. standby NN每隔一段时 ...

  6. ​'JAVAC' 不是内部或外部命令解决方法,记得要重启cmd

    我们在配置完环境变量后,在命令提示框中输入javac命令时,往往会提示javac不是内部或者外部命令时怎么办呢?我们一起来解决它吧! 我们配置完java环境变量之后,在命令行输入javac按下回车键, ...

  7. linux 删除用户

    userdel可删除用户帐号与相关的文件.若不加参数,则仅删除用户帐号,而不删除相关文件命 令: userdel 功能说明:删除用户帐号. 语 法:userdel [-r][用户帐号] 补充说明:us ...

  8. 网页项目——i家居网站

    本文介绍一个网页项目--i家居网站,小妹初来乍到,欢迎大家评论建议O(∩_∩)O~ 详细源代码.各种框架的实现以及素材均已上传百度云,需要的可以下载: 首页展示 用户注册页面 用户登录页面 商家注册页 ...

  9. winform app.config文件的动态配置

    获取 获取应用程序exe.config文件中  节点value值 /// <summary> /// 功能: 读取应用程序exe.config文件中 /// appSettings节点下 ...

  10. node+mongodb+ionic+cordova

    node + mongodb1,环境 windows 1,install nodejs 2,install npm | cd npmjs node cli.js install -gf1.1 2.no ...