iOS流布局UICollectionView系列四——自定义FlowLayout进行瀑布流布局(二)

简介: iOS流布局UICollectionView系列四——自定义FlowLayout进行瀑布流布局

@end

自定义完成FlowLayout后,我们在ViewController中进行使用:


- (void)viewDidLoad {

   [super viewDidLoad];

   // Do any additional setup after loading the view, typically from a nib.

   MyLayout * layout = [[MyLayout alloc]init];

   layout.scrollDirection = UICollectionViewScrollDirectionVertical;

   layout.itemCount=100;

    UICollectionView * collect  = [[UICollectionView alloc]initWithFrame:CGRectMake(0, 0, 320, 400) collectionViewLayout:layout];

   collect.delegate=self;

   collect.dataSource=self;

 

   [collect registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"cellid"];

 

   [self.view addSubview:collect];

 

 

}




-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{

   return 1;

}

-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{

   return 100;

}

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{

   UICollectionViewCell * cell  = [collectionView dequeueReusableCellWithReuseIdentifier:@"cellid" forIndexPath:indexPath];

   cell.backgroundColor = [UIColor colorWithRed:arc4random()%255/255.0 green:arc4random()%255/255.0 blue:arc4random()%255/255.0 alpha:1];

   return cell;

}

运行效果就是我们引言中的截图。

三、UICollectionViewLayoutAttributes类中我们可以配置的属性


       通过上面的例子,我们可以了解,collectionView的item布局其实是LayoutAttributes类具体配置的,这个类可以配置的布局属性不止是frame这么简单,其中还有许多属性:


//配置item的布局位置

@property (nonatomic) CGRect frame;

//配置item的中心

@property (nonatomic) CGPoint center;

//配置item的尺寸

@property (nonatomic) CGSize size;

//配置item的3D效果

@property (nonatomic) CATransform3D transform3D;

//配置item的bounds

@property (nonatomic) CGRect bounds NS_AVAILABLE_IOS(7_0);

//配置item的旋转

@property (nonatomic) CGAffineTransform transform NS_AVAILABLE_IOS(7_0);

//配置item的alpha

@property (nonatomic) CGFloat alpha;

//配置item的z坐标

@property (nonatomic) NSInteger zIndex; // default is 0

//配置item的隐藏

@property (nonatomic, getter=isHidden) BOOL hidden;

//item的indexpath

@property (nonatomic, strong) NSIndexPath *indexPath;

//获取item的类型

@property (nonatomic, readonly) UICollectionElementCategory representedElementCategory;

@property (nonatomic, readonly, nullable) NSString *representedElementKind;


//一些创建方法

+ (instancetype)layoutAttributesForCellWithIndexPath:(NSIndexPath *)indexPath;

+ (instancetype)layoutAttributesForSupplementaryViewOfKind:(NSString *)elementKind withIndexPath:(NSIndexPath *)indexPath;

+ (instancetype)layoutAttributesForDecorationViewOfKind:(NSString *)decorationViewKind withIndexPath:(NSIndexPath *)indexPath;

通过上面的属性,可以布局出各式各样的炫酷效果,正如一句话:没有做不到,只有想不到。

目录
相关文章
|
7月前
|
iOS开发
iOS多线程之NSOperationQueue-依赖、并发数、优先级、自定义Operation等最全的使用总结
iOS多线程之NSOperationQueue-依赖、并发数、优先级、自定义Operation等最全的使用总结
216 0
|
7月前
|
API iOS开发
iOS 自定义转场动画 UIViewControllerTransitioning
iOS 自定义转场动画 UIViewControllerTransitioning
46 0
|
8月前
|
Swift iOS开发
iOS 13 之后自定义 Window 不显示解决 (SceneDelegate)
iOS 13 之后自定义 Window 不显示解决 (SceneDelegate)
256 0
|
Linux iOS开发 开发者
WIN11自定义版本ios镜像下载教程
WIN11自定义版本ios镜像下载教程
WIN11自定义版本ios镜像下载教程
|
API iOS开发 Perl
iOS UISlider自定义渐变色滑杆
iOS UISlider自定义渐变色滑杆
iOS UISlider自定义渐变色滑杆
|
API iOS开发 Perl
iOS UILabel自定义位置
iOS UILabel自定义位置
iOS UILabel自定义位置
|
移动开发 JavaScript weex
weex-自定义module,实现weex在iOS的本地化,js之间互相跳转,交互,传值(iOS接入weex的最佳方式)
weex-自定义module,实现weex在iOS的本地化,js之间互相跳转,交互,传值(iOS接入weex的最佳方式)
219 0
|
iOS开发
iOS开发-banner滚动图自定义
iOS开发-banner滚动图自定义
183 0
iOS开发-banner滚动图自定义
|
文字识别 iOS开发
|
Go iOS开发
iOS使用xib自定义uiview
iOS使用xib自定义uiview
316 0
iOS使用xib自定义uiview