1.简单说说UICollectionViewController                 

我们在做九宫格布局时,可以使用UIScrollView,也可以使用UICollectionViewController。

当我们用UICollectionViewController来进行九宫格布局,可以更加方便,省去很多麻烦,例如横竖屏的适配。

UICollectionViewController 用起来非常简单,只需要简单的几步,就能实现非常的漂亮的九宫格布局。

下面就说说UICollectionViewController实现的几步。

2.UICollectionViewController的实现                 

2.1.传递布局                                           

首页创建UICollectionViewController时,需要给它传一个展示的布局,一般九宫格用的都使流水布局!

    // 1.创建流水布局

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

      // 2.设置每个格子的尺寸
layout.itemSize = CGSizeMake(, ); // 3.设置整个collectionView的内边距
CGFloat paddingY = ;
CGFloat paddingX = ;
layout.sectionInset = UIEdgeInsetsMake(paddingY, paddingX, paddingY, paddingX); // 4.设置每一行之间的间距
layout.minimumLineSpacing = paddingY;

2.2.初始化UICollectionViewController,设置展示布局                     

//初始化 UICollectionViewController
UICollectionViewController *controller = [[UICollectionViewController alloc] initWithCollectionViewLayout:layout]

在对 UICollectionViewController 的 View 进行相关属性设置和属性修改时,记得要拿到UICollectionViewController.collectionView 再设置。

 //设置背景
self.collectionView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"bg_deal"]];

2.3.显示数据                                           

记得分别实现

<UICollectionViewDelegate, UICollectionViewDataSource>

之后再调用代理数据源方法和代理方法

#pragma mark - 数据源方法
/**
3 * 第section组有多少个格子(cell)
4 */
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return _deals.count;
} //每个格子的内容
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
// indexPath.item 某一组的哪一个
// indexPath.section 哪一组
// 1.创建cell
QCDealCell *cell = [QCDealCell cellWithCollectionView:collectionView indexPath:indexPath]; // 2.取出模型,传递模型
cell.deal = _deals[indexPath.item]; return cell;
}

模型数据封装好后,就能实现上图展示效果,横竖屏自动适配好!

                                                       清澈Saup

            

                                 

iOS- 用UICollectionViewController 来进行横竖屏九宫格布局的更多相关文章

  1. iOS回顾笔记( 02 ) -- 由九宫格布局引发的一系列“惨案”

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

  2. ios单独的页面支持横竖屏的状态调整,HTML5加载下(更新2)

    单独的页面支持横竖屏的状态调整,HTML5加载下 工程中设置只支持竖屏状态,在加载HTML5的界面可以是横竖屏的,在不对工程其他界面/设置做调整的同时,可以这样去 #import "View ...

  3. iOS 实现单个页面支持横竖屏,其他页面只能竖屏

    最近在自己的项目里面 有需要做一个需求 : app中某一个页面支持横竖屏, 而其他页面只能竖屏. 1 2 实现方法如下: 1 首先需要Xcode中选中支持的屏幕方向  2 Appdelegate中 . ...

  4. Activity 横竖屏切换

    前言 在开发中常要处理横竖屏切换,怎么处理先看生命周期 申明 Activity 横竖屏切换时需要回调两个函数 ,所以在此将这个两个函数暂时看成是Activity 横竖屏切换的生命周期的一部分,这两个函 ...

  5. 【转】Android横竖屏切换问题

    Android横竖屏切换总结(Android资料) Android横竖屏要解决的问题应该就两个: 一.布局问题 二.重新载入问题 1.布局问题:如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的 ...

  6. Android横竖屏切换处理

    Android横竖屏要解决的问题应该就两个: 1.布局问题:2.重新载入问题   一.布局问题: 如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的AndroidManifest.xml中找到你 ...

  7. Android横竖屏切换总结

    Android横竖屏切换总结(Android资料) Android横竖屏要解决的问题应该就两个: 一.布局问题 二.重新载入问题 1.布局问题:如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的 ...

  8. Android layout的横竖屏处理

    一.layout-land和layout-prot的区别与使用 默认情况下,创建的Android项目里只有一个layout文件夹,尽管这样也可以横竖屏切换用,但是某些布局横屏过后闲的格外的丑,如下图 ...

  9. iPad横竖屏代码适配

    你可能非常了解用不同的方式去适配不同尺寸的iPhone屏幕,在适配iPhone屏幕时你需要考虑的只是屏幕大小变化带来的UI元素间隔的变化,但是在iPad上主要针对的是横竖屏下完全不同的UI元素的布局, ...

随机推荐

  1. HDFS重要特性

    首先,它是一个文件系统,用于存储文件,通过统一的命名空间目录树来定位文件: 其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色. 1. master/slave 架构 HD ...

  2. usb之鼠标作为按键输入

    1. 首先搞清楚,鼠标点左键.右键等能得到什么数据,然后分析这些数据上报事件即可. 第一个基本点:usb_alloc_urb函数,创建一个struct urb结构体,只能使用这个函数来创建,它是urb ...

  3. 『Python基础-15』递归函数 Recursion Function

    什么是递归函数 一种计算过程,如果其中每一步都要用到前一步或前几步的结果,称为递归的.用递归过程定义的函数,称为递归函数,例如连加.连乘及阶乘等.凡是递归的函数,都是可计算的,即能行的. 递归就是一个 ...

  4. 树莓派编译程序时报错:virtual memory exhausted: Cannot allocate memory

    一.原因分析: 树莓派内存太小,编译程序会出现virtual memory exhausted: Cannot allocate memory的问题,可以用swap扩展内存的方法. 二.解决方法: 安 ...

  5. 小程序开发-13-小程序wxs的应用

    内容简介的换行 问题:因为微信的<text></text>标签能够转义\n,所以从服务器加载来的数据我们可以直接放到这个标签中,\n就会自己换行了.问题是服务器返回来的数据多了 ...

  6. linux 命令绿色安装

    有些电脑不能联网,软件不能使用 apt-get 或 dnf . 从已安装的机器上拷贝命令到这台机器上就可以.设想. **** 以 tree 命令为例: **先从联网的机器上安装 apt-get ins ...

  7. AtCoder Regular Contest 098 F.Donation

    传送门 首先,对于一个点i,进入这个点前必须大于等于Ai,每个点必须捐赠Bi 那么我们可以在每个点最后一次经过的时候再捐赠,这样显然更优 现在我们假设每个点都是最后一次经过的时候捐赠.现在我们把捐赠的 ...

  8. yii2 shi用modal弹窗 select2搜索框无法使用

    在modal使用begin的时候指定options选项的tabindex为false Modal::begin([ // ...... 'options' => [ 'tabindex' =&g ...

  9. 【BZOJ1564】【NOI2009】二叉查找树(动态规划)

    [BZOJ1564][NOI2009]二叉查找树(动态规划) 题面 BZOJ 洛谷 题目描述 已知一棵特殊的二叉查找树.根据定义,该二叉查找树中每个结点的数据值都比它左儿子结点的数据值大,而比它右儿子 ...

  10. 北京Uber优步司机奖励政策(2月28日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...