自定义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 ...
 
随机推荐
- ARM  汇编 内存访问指令
			
一. 单个寄存器操作读写内存 内存访问指令格式:<opcode><cond> Rd, [Rn] Rn 中保存的是一个内存的地址值 1. 内存写指令 [ str,strb,st ...
 - 【ZJOI2007】捉迷藏
			
题面 Description Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子. 某天,Jiajia.Wind和孩子们决定在家里玩捉迷藏游戏. 他们的家很大且构造很奇特,由N个屋子和N-1条 ...
 - leetcood学习笔记-202-快乐数
			
题目描述: 方法一:比较笨的办法,根据题意,如果变成1返回True,如果出现重复返回False 看到下面有位朋友用的是dict,我用了list,两个都跑了一下似乎list快一点? class Solu ...
 - Mysql 编译报错 g++: internal compiler error: Killed (program cc1plus) 解决办法
			
g++: internal compiler error: Killed (program cc1plus) 解决办法 g++: internal compiler error: Killed (pr ...
 - SP2713 GSS4 - Can you answer these queries IV(线段树)
			
传送门 解题思路 大概就是一个数很少次数的开方会开到\(1\),而\(1\)开方还是\(1\),所以维护一个和,维护一个开方标记,维护一个区间是否全部为\(1/0\)的标记.然后每次修改时先看是否有全 ...
 - ParameterizedThreadStart task
			
using System;using System.Diagnostics;using System.Threading;using System.Threading.Tasks; namespace ...
 - 剑指offer——17数值的整数次方
			
题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 保证base和exponent不同时为0 一般解法: 直接相乘: cl ...
 - linux mysql 远程访问权限问题
			
1.为了让访问mysql的客户端的用户有访问权限,我们可以通过如下方式为用户进行授权:mysql> grant all on *.* to user_name@'%' identified by ...
 - pathlib生成文件的软链接
			
在训练深度网络时,保存模型,想要维护一个latest.t7的文件,想到给最好的模型创建一个软链接到latest.t7 这样模型不占地,还能便于后续脚本加载最好模型 起初是看到mmdetection中是 ...
 - 随笔-ansible-2
			
通过Ansible来搭建一套Web服务架构.[以AD-HOC的形式] Inventory文件内容如下: [proxy] 192.168.40.254 [app] 192.168.40.243 [nos ...