你的位置:首页 > 软件开发 > 操作系统 > IOS 瀑布流UICollectionView实现

IOS 瀑布流UICollectionView实现

发布时间:2016-04-09 15:00:08
IOS 瀑布流UICollectionView实现在实现瀑布流之前先来看看瀑布流的雏形(此方法的雏形 UICollectionView)对于UICollectionView我们有几点注意事项它和tableView不一样,ContentView的内容完全需要我们自己去添加。它与ta ...

IOS 瀑布流UICollectionView实现

IOS 瀑布流UICollectionView实现


在实现瀑布流之前先来看看瀑布流的雏形(此方法的雏形 UICollectionView)

对于UICollectionView我们有几点注意事项

  • 它和tableView不一样,ContentView的内容完全需要我们自己去添加。
  • 它与tableview相比,他的初始化需要FlowLayout并且大部分操作在其上。
  • UIcollectionView的实用性极强,虽然有时他并不是最好的解决方案,但是它可以很灵活的实现各种效果。

图(一)

IOS 瀑布流UICollectionView实现

如图,模拟器上展示的是很多方格,但是值得注意的是他们是有规则的。

虽然看上去很整洁但是并不美观。

我们所说的要实现瀑布流就是要实现它的不整洁,但是规律(这里我说的是规律)

正题

前面说了UIcollectionView的大部分操作在FlowLayout上,当然也包括格局部署。

为了实现瀑布流我们所要实现的便是改变他的格局部署。

在写代码前先确定一下实现思想。

  • 需要什么???
    • 首先我们需要确定瀑布流的显示风格
    • 然后根据确定好的风格进行整体设计
    • 最后通过细节的处理完善代码
      • 我们需要什么样的风格???
        • 我们需要的是实现将上面图片中的布局改变为不等高的效果
        • 说的俗一点就是像名字一样,像瀑布流水一样
      • 整体该如何设计???
        • 整体采用与上面图片一样的设计方法,每个模块都是一个cell
        • 确保最上面一行的cell的y值相同(美观)
        • 确保不不会出现一列特别长,一列特别短的效果
      • 初步细节有哪些???
        • 因为每个cell的height不同,所以我们要考虑放置的顺序应该是什么
        • 精简代码(这是每个项目必须注意的)

实现效果

IOS 瀑布流UICollectionView实现

代码

下面是实现的代码部分(不提供demo了 很简单)

我在注释中简单介绍。

---

//// ViewController.m// CX-瀑布流UIcollectionView实现//// Created by ma c on 16/4/8.// Copyright © 2016年 bjsxt. All rights reserved.//#import "ViewController.h"#import "CXCollectionViewCell.h"#import "CXCollectionViewLayout.h"static NSString * identifier = @"cellID";@interface ViewController ()<UICollectionViewDataSource>//所要展示的UICollectionView@property (nonatomic, strong) UICollectionView * collectionView;@end@implementation ViewController#pragma mark - <懒加载>- (UICollectionView *)collectionView {  if (!_collectionView) {    //初始化我们自定义的flowLayout    CXCollectionViewLayout * flowLayout = [[CXCollectionViewLayout alloc]init];    //初始化collectionView    _collectionView = [[UICollectionView alloc]initWithFrame:self.view.bounds collectionViewLayout:flowLayout];    //设置数据源(collectionView的命根子)    _collectionView.dataSource = self;    //注册我们自定义的cell    [_collectionView registerNib:[UINib nibWithNibName:NSStringFromClass([CXCollectionViewCell class]) bundle:nil] forCellWithReuseIdentifier:identifier];  }  return _collectionView;}#pragma mark - <life>- (void)viewDidLoad {  [super viewDidLoad];  //在self.view上添加---  [self.view addSubview:self.collectionView];}#pragma mark - <UICollectionViewDataSource>//这里返回的是item的个数 返回100- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{    return 100;}//这里返回的是cell 我们可以在这里进行一些简单的操作-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{    CXCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];  //为了瀑布流的实现细节我们添加的Label    cell.label.text = [NSString stringWithFormat:@"%zd",indexPath.item];  //cell的背景色  cell.backgroundColor = [UIColor orangeColor];    return cell;}@end

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:IOS 瀑布流UICollectionView实现

关键词:IOS

IOS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。