自定义Collection View布局

containers),对他们真实的内容(contents)毫不知情。
layout也可以在单行或单列中布局cell。实际上,UITableView的布局可以想象成flow layout的一种特殊情况。
views。
view中的注册。同样的方法也可以用在supplementary view上,前提是你使用了UICollectionViewFlowLayout。如果没有,你只能通过调用registerClass:或者registerNib:方法手动注册视图类了。你需要在viewDidLoad中做这些操作。

view并且返回足够大的内容宽度,这会使得用户感觉在两个方向上滑动自由。
- - (CGSize)collectionViewContentSize
- {
- // Don't scroll horizontally
- CGFloat contentWidth = self.collectionView.bounds.size.width;
- // Scroll vertically to display a full day
- CGFloat contentHeight = DayHeaderHeight + (HeightPerHour * HoursPerDay);
- CGSize contentSize = CGSizeMake(contentWidth, contentHeight);
- return contentSize;
- }
view会将kind字符传回到你的数据源。记住supplementary和decoration views的数量和种类完全由布局控制。你不会受到headers和footers的限制。
- - (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect
- {
- NSMutableArray *layoutAttributes = [NSMutableArray array];
- // Cells
- // We call a custom helper method -indexPathsOfItemsInRect: here
- // which computes the index paths of the cells that should be included
- // in rect.
- NSArray *visibleIndexPaths = [self indexPathsOfItemsInRect:rect];
- for (NSIndexPath *indexPath in visibleIndexPaths) {
- UICollectionViewLayoutAttributes *attributes =
- [self layoutAttributesForItemAtIndexPath:indexPath];
- [layoutAttributes addObject:attributes];
- }
- // Supplementary views
- NSArray *dayHeaderViewIndexPaths = [self indexPathsOfDayHeaderViewsInRect:rect];
- for (NSIndexPath *indexPath in dayHeaderViewIndexPaths) {
- UICollectionViewLayoutAttributes *attributes =
- [self layoutAttributesForSupplementaryViewOfKind:@"DayHeaderView"
- atIndexPath:indexPath];
- [layoutAttributes addObject:attributes];
- }
- NSArray *hourHeaderViewIndexPaths = [self indexPathsOfHourHeaderViewsInRect:rect];
- for (NSIndexPath *indexPath in hourHeaderViewIndexPaths) {
- UICollectionViewLayoutAttributes *attributes =
- [self layoutAttributesForSupplementaryViewOfKind:@"HourHeaderView"
- atIndexPath:indexPath];
- [layoutAttributes addObject:attributes];
- }
- return layoutAttributes;
- }
- - (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath
- {
- CalendarDataSource *dataSource = self.collectionView.dataSource;
- id<CalendarEvent> event = [dataSource eventAtIndexPath:indexPath];
- UICollectionViewLayoutAttributes *attributes =
- [UICollectionViewLayoutAttributes layoutAttributesForCellWithIndexPath:indexPath];
- attributes.frame = [self frameForEvent:event];
- return attributes;
- }
和 +layoutAttributesForDecorationViewOfKind:withIndexPath:,他们是用来创建正确的布局属性对象。
- - (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds
- {
- CGRect oldBounds = self.collectionView.bounds;
- if (CGRectGetWidth(newBounds) != CGRectGetWidth(oldBounds)) {
- return YES;
- }
- return NO;
- }
view不仅向其布局请求cell正常状态下的布局属性,同时还请求其初始的布局属性,比如,需要在开始有插入动画的cell。collection view会简单的创建一个animation block,并在这个block中,将所有cell的属性从初始(initial)状态改变到常态(normal)。
prescribes.)。
自定义Collection View布局的更多相关文章
- 自定义 Collection View 布局
自定义 Collection View 布局 answer-huang 29 Mar 2014 分享文章 UICollectionView 在 iOS6 中第一次被引入,也是 UIKit 视图类中的一 ...
- iOS系列译文:自定义Collection View布局
原文出处: Ole Begemann 译文出处: 黄爱武(@answer-huang).欢迎加入技术翻译小组. UICollectionView在iOS6中第一次被介绍,也是UIKit视图类中的一 ...
- IOS UIView 03- 自定义 Collection View 布局
注:本人是翻译过来,并且加上本人的一点见解. 前言 UICollectionView 在 iOS6 中第一次被引入,也是 UIKit 视图类中的一颗新星.它和 UITableView 共享一套 API ...
- Collection View 自定义布局(custom flow layout)
Collection view自定义布局 一般我们自定义布局都会新建一个类,继承自UICollectionViewFlowLayout,然后重写几个方法: prepareLayout():当准备开始布 ...
- Customize the View Items Layout 自定义视图项目布局
In this lesson, you will learn how to customize the default editor layout in a Detail View. For this ...
- Collection View Programming Guide for iOS---(七)---Custom Layouts: A Worked Example
Custom Layouts: A Worked Example Creating a custom collection view layout is simple with straightfor ...
- Collection View Programming Guide for iOS---(六)---Creating Custom Layouts
Creating Custom Layouts 创建自定义布局 Before you start building custom layouts, consider whether doing so ...
- Collection View Programming Guide for iOS---(五)---Incorporating Gesture Support
Incorporating Gesture Support 结合手势支持 You can add greater interactivity to your collection views th ...
- Collection View Programming Guide for iOS---(四)---Using the Flow Layout
Using the Flow Layout使用流布局 The UICollectionViewFlowLayout class is a concrete layout object that y ...
随机推荐
- python 2 学习历程(一)
在用户输入字符串的时候,有时会带有一些其他的字符,例如常见的空格 除非在网页或者某个位置声明了空格也算字符,或者一些账号等安全程度较高的环节,多了一个空格很少有人会注意到,并且愿意即时改正它们,那么这 ...
- Mariadb 10.2.8版本GTID主从环境搭建以及切换
1.首先搭建主从 主环境:192.168.1.117 从环境:192.168.1.123 a.首先以二进制包的形式安装好MariaDB (忽略不计) b.配置环境的变量 通配 [mysqld] bin ...
- PHP - 实现 strStr()
实现 strStr() 函数. 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始).如果不存在,则返 ...
- 常用的Docker镜像及处理命令
常用的镜像命令 docker run -d --name dockerui -p : -v /var/run/docker.sock:/var/run/docker.sock abh1nav/dock ...
- vue cli3 vue.config配置
跳地址:https://cli.vuejs.org/zh/config/#publicpath
- 欧拉定理、欧拉函数、a/b%c
怕忘了…… 欧拉函数 定义.证明.打表方法 欧拉定理 定义.证明 https://blog.csdn.net/zzkksunboy/article/details/73061013 剩余系.完系.简系 ...
- C++:查找字符串字串并替换
string a;/////指定串,可根据要求替换 string b;////要查找的串,可根据要求替换 string c; cin>>a>>b>>c; int p ...
- GdiPlus 一个给 Delphi 提供的新的 GDI+ 接口很好用!
尽管 GDI+ 已经有近 10 年的历史(随 Win2000 推出), 尽管 DirectX 如日中天, 但在 Windows 7 之前的版本下进行 2D 绘图还是离不开它, 微软也没有停止对它的升级 ...
- NOIp2018集训test-9-18
T1.Conjugate 只能选没选过的点,看成如果选了选过的堆的点就不管它继续选.如果第一次选到某一堆的点在第一次选到第一堆的点之前,这一堆对答案就会有1的贡献.那么a[i]有贡献的概率是a[i]和 ...
- NXOpenC#_Training_blockstyler(cn)【转载】