自定义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 ...
随机推荐
- 记录一次工作中jvm被linux杀死的调查
首先,以后碰到任何jvm的错误,先看日志!!!!!!!! web项目在tomcat目录下的log里,或者自己设定的errorfile目录下.总之,找到一切可以运用的日志,比如crash日志,cored ...
- Dubbo管理端工具
要得到dubbo的管理端工具其实很简单,只需要下面几步: 1.下载源码:我下载的是dubbo-dubbo-2.5.7.zip . 2.使用maven命令编译源码,得到war包: 将下载的dubbo-d ...
- Dart编程环境
本章讨论在Windows平台上为Dart设置执行环境. 使用DartPad在线执行脚本 您可以使用https://dartpad.dartlang.org/上的在线编辑器在线测试您的脚本.Dart编辑 ...
- JavaScript学习笔记之CSS-DOM
HTML负责结构层,网页的结构层由HTML或者XHTML之类的标记语言负责构建 CSS负责表示层,描述页面内容应该如何呈现. JavaScript负责行为层,负责内容应该如何响应事件这一问题. 能利用 ...
- 反演+分块套分块——bzoj2154
题解都在论文里了 #include<bits/stdc++.h> using namespace std; #define maxn 10000005 #define ll long lo ...
- 再学 GDI+文本输出文本样式
代码文件: unit Unit1; interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls ...
- Kafka Streams详细
概述 1 Kafka Streams Kafka Streams.Apache Kafka开源项目的一个组成部分.是一个功能强大,易于使用的库.用于在Kafka上构建高可分布式.拓展性,容错的应用程序 ...
- 禁用NX软件启动欢迎界面[转载]
环境变量UGII_BACKGROUND_URL NONE 转载自https://www.ugnx.net/wt/414
- 执行SQL语句---INSERT/UPDATE/DELETE
1.执行SQL语句函数: int mysql_query(MYSQL* mysql, const char * query); query:所有的sql语句 2.例子: 向children表插入一条语 ...
- 2.2_springboot2.x消息RabbitMQ整合&amqpAdmin管理组件的使用
5.1.1.基本测试 1.引 spring-boot-starter-amqp** <dependencies> <dependency> <groupId>org ...