UI基础(八)之collectionView的认识和使用

1. UICollectionView默认背景颜色就是黑的
颜色改为白色之后<就是一个空白的界面

2. UICollectionView显示数据,UITableView基本一致

3. 一个UICollectionViewCell所展现的样式,事实上是由内部的UICollectionViewFlowLayout进行决定的

在垂直滚动时,头View的宽度 就是collectionView的宽度,它的宽度由系统决定,如果我们自己设置宽度的话,是没有效果,只有高度是有效果


设置cell之间的间距时一定要注意(item之间的间距)
注意: 在我们自己写九宫格算法的时候,一行上显示多少个控件,是由我们自己指定的
当时当使用UICollectionView的时候,它一行上显示多少个控件,是系统自己计算的
它计算的规则在于 根据item的大小意见间距去计算界面上显示多少个控件,这个时候一定要注意: 设置的是cell间最小间距,在排列时,如果发现item在一行上展现不开时,它就会把多出来的item给放在下一行,而上一行item之间的间距,它就会做一个等分,(拉伸间距)

所以在使用UICollectionView的时候一定要注意: item的大小和间距,按照最小分辨率的屏幕进行设置
3.5英寸


4. UICollectionView滚动方向不同会有一定的差异

1. 排列方式
垂直滚动: 从左到右
水平滚动: 从上到下


2. 间距
垂直滚动和水平滚动
cell的间距和行间距是不同的
3. 头尾view
垂直滚动: 头View宽由系统设定 ,只有高度起作用
水平滚动: 头View宽会起作用 高度由系统指定

 

5. 组头组尾 页眉页脚
默认设置高度是有效果的,但是里面的内容不显示,想要显示,需要做处理
想要显示内容:需要设置代理方法

下面链接是关于collectionView的介绍,做个理解.

 http://blog.csdn.net/vbirdbest/article/details/50720915

重点掌握:相册效果和瀑布流(不管用不用得到,其实是对UIcollectionView的一个深入了解,所以必须掌握)

1.自定义layout的六个方法:

#import "HMMyLayout.h"
@implementation HMMyLayout
//这个方法,在是布局搭建前运行的,只会运行一次
//搭建布局的准备工作,可以放在这里
- (void)prepareLayout{

    NSLog(@"%s",__func__);

}
/**
 *  返回对应区域内,控件的属性,默认返回的就是界面中可以看到的
 *
 *  @param rect CGRect --> x y w h 四个信息
 *
 *  @return NSArray数组-->对应控件的属性(所有控件都有的)
 */
-(NSArray<UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect{
    NSLog(@"%s",__func__);

    return [super layoutAttributesForElementsInRect:rect];
}
/**
 *  根据索引,返回具体某一个item中控件的属性
 *
 *  @param indexPath 索引
  系统默认不会调用,提供给开发者使用,由开发者调用
 *
 *  @return 单独控件的属性
 */
- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath{
    NSLog(@"%s",__func__);

    return [super layoutAttributesForItemAtIndexPath:indexPath];
}
/**
 *  返回控件可以滚动的区域
 */
- (CGSize)collectionViewContentSize{

    return [super collectionViewContentSize];

}
//如果在界面滚动的过程中,对应看到的控件的大小,需要随着界面的滚动而产生变化,那么就返回YES
// 否则就返回NO
- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds{
    NSLog(@"%s",__func__);
  return  [super shouldInvalidateLayoutForBoundsChange:newBounds];
    
}
/**
 *  滚动快要停止的时候调用,
 *
 *  @param proposedContentOffset 滚动的偏移值(界面要停止的位置)
 *  @param velocity              速率 用户对界面的操作 基本用不到
 *
 *  @return 返回的就是界面最终停止的位置
 */
- (CGPoint)targetContentOffsetForProposedContentOffset:(CGPoint)proposedContentOffset withScrollingVelocity:(CGPoint)velocity{

    NSLog(@"%s",__func__);

    return [super targetContentOffsetForProposedContentOffset:proposedContentOffset withScrollingVelocity:velocity];
}
@end

 

posted @ 2016-11-16 01:19  忆缘晨风  阅读(160)  评论(0编辑  收藏  举报