内容大纲:

1、纯代码 添加子控件
2、Autolayout纯代码 -- Masonry框架的使用
3、自定义等高的cell -- storyboard的使用(更加简单)
4、静态cell

等高的Cell

自定义等高的cell

  • 纯代码

    • frame
    • Autolayout

1、纯代码 添加子控件

项目初始准备:


1、将Storyboard的开始默认的UIView删除,
2、然后添加UITableViewController的控件,
3、将UITableViewController控件设置为is init View Controller,同时设置class为ViewController,
4、接着回到ViewController.h文件,将其继承UITableViewController。
5、最后回到ViewController.m文件,进行纯代码操作。

纯代码操作开始:

1、实现数据源方法。<略,必须会啊,这里就不提了>
2、先写好访问缓存池加载cell的代码

本来:然后自定义cell,自定义控件里面两个方法:添加子控件方法initFrame,设置子控件方法layoutSubviews 但是: 这里两个方法是不会被调用的,因为前面的访问缓存池方法是调用(自己补充截图)

3、新建继承UITableViewCell自定义cell,添加子控件方法initWithStyle同时调用父类的这个方法,设置子控件方法layoutSubviews

4、接着要注意的就是
<1>如果需要引用指向子控件,然后使用,取名不要和UITableViewCell自带的子控件冲突,比如self.label detailLabel
<2>然后就是一定要先将创建的子控件对象添加进父控件,然后再用前面声明的弱引用指向它。
<3>添加子控件,一定要用self.contentView add... 不要用 self add.. 因为在这里子控件的父类建议是contentView

如果要用注册的方法循环利用cell,也是可以的,而且通过以下注册的方法,其实内部也是调用自定义cell的initWithStyle的初始化方法,是不会调用init或者initWithFrame方法的。

接下来就是为子控件设置位置


首先要记得:

然后开始设置子控件的frame

到这里就直接给源码了

链接: http://pan.baidu.com/s/1eQrxLaM 密码: jw7c

效果图:

Autolayout纯代码 -- Masonry框架的使用

我们会发现前面纯代码设置布局,如果项目复杂的时候,代码会写的很恶心,所以需要好用的框架。 如果要继续使用前一章节的代码,请讲源代码中的-(void)layoutSubviews方法全部删去即可,因为不需要这个设置子控件布局了。

首先是Masonry框架的百度云下载

链接: http://pan.baidu.com/s/1jGrVFaY 密码: e2rq

框架使用注意:

#define MAS_SHORTHAND
#define MAS_SHORTHAND_GLOBALS
#import "Masonry.h"

注意:

1、除了导入头文件,还需要定义宏,而且这两个宏必须写在import之前,定义宏的作用是:会自定提供某些代码给你用。总之以上三行代码原封不动的写在文件首部。
2、子控件必须加进父控件再设置约束,因为相关约束是和父控件相关的。而且是要写在创建和添加父控件之后。下面看图代码就知道了。

总结:主要还是通过敲敲代码熟悉框架的使用。不敲不算真正会使用框架。

相关Frame的补充:

例如:CGMakeGetMaxX(控件的对象.frame),CGMakeGetCenterX(控件的对象.frame)等相关的使用,可以查看源代码查看其它的。

自定义等高的cell -- xib的使用

这 时候,新建一个xib文件和新建一个xib使用的继承UITableViewCell的类HYTableViewCell。 然后在继承自UITableViewController的ViewController中写好数据源方法。<这些准备工作就略过了。> 记得要将xib文件对应的class设置为自定义cell上:

  • 主要工作开始喽:

1、在数据源方法中,其中写绑定数据源循环利用标识加载cell与之前纯代码就不一样了

之前:

现在:

2、在xib文件设定好尺寸之后,然后添加UIImageView和UILabel控件,以及通过拖线设置好布局。

3、然后一定要记得将子控件拖线到自定义需要的UI类并连接。

注意必须知道的要点:

通过xib加载自定义cell,不管是通过注册,还是通过在设cell的循环利用的方法,他们都不会去调用alloc-init/initWithStyle。子控件也同样。

另外:可以在新建的时候:

因为新建的相关的xib文件,就是TableViewCell控件(其实之前可以直接拖拽TableViewCell控件,而我之前都是直接拖拽UIView控件,所以没有ID属性),所以有ID属性设置,可以将自定义cell要绑定ID设置:

但 不管cell的父控件是UIView还是TableViewCell在控制器代码中,绑定ID代码差不多麻烦(麻烦的原因:因为在 ViewController加载外部的xib还是与xib相关的自定义控件代码文件,都需要首次加载,毕竟一开始就不是属于 Viewcontroller自己管的,所以后面的用storyboard的方法是最简单的),但是加载外部的xib还是与xib相关的自定义控件代码文 件两者也有区别:

最后,xib对应的类文件,不管是父控件还是子控件都可以重写的方法 :

-(void)awakeFromNib{
//用于初始化控件的属性
} -(void)layoutSubviews{
//用于设置子控件的布局
}

自定义等高的cell -- storyboard的使用(更加简单)

为storyboard的操作和前面的xib操作一样,添加子控件、设置子控件的布局、拖线索引等等都一样。这里就不累述了。

错误注意事项:

自定义cell的分割线

直接上图:

以上相关源代码链接: http://pan.baidu.com/s/1i3jkmFV 密码: xatp

静态cell

前面讲的都是动态cell,因为动态的cell是通过代码加载数据,是可以动态更新的。

TableView的静态Cell要会使用。这个有时间弄成gif图片。

另外要进一步,未完待续。

 
 
 
 
 
 
 
 
 

IOS之UI -- UITableView -- 2 -- 等高的Cell的更多相关文章

  1. IOS之UI -- UITableView -- 1 -- 相关初识

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  2. [iOS]UIScrollView嵌套UITableView,超出屏幕的cell点击不了问题

    最初我是用UIScrollView嵌套了一个UIView,然后UIView里面嵌套UITableView,这样cell 就会超出屏幕那一部分点击不了. 解决方法如下,UITableView拖出来,作为 ...

  3. iOS开发UI篇—UITableview控件基本使用

    iOS开发UI篇—UITableview控件基本使用 一.一个简单的英雄展示程序 NJHero.h文件代码(字典转模型) #import <Foundation/Foundation.h> ...

  4. iOS开发UI篇—UITableview控件简单介绍

    iOS开发UI篇—UITableview控件简单介绍 一.基本介绍 在众多移动应⽤用中,能看到各式各样的表格数据 . 在iOS中,要实现表格数据展示,最常用的做法就是使用UITableView,UIT ...

  5. iOS开发UI篇—实现UItableview控件数据刷新

    iOS开发UI篇—实现UItableview控件数据刷新 一.项目文件结构和plist文件 二.实现效果 1.说明:这是一个英雄展示界面,点击选中行,可以修改改行英雄的名称(完成数据刷新的操作). 运 ...

  6. iOS开发UI篇—UITableview控件使用小结

    iOS开发UI篇—UITableview控件使用小结 一.UITableview的使用步骤 UITableview的使用就只有简单的三个步骤: 1.告诉一共有多少组数据 方法:- (NSInteger ...

  7. iOS开发UI篇—使用UItableview完成一个简单的QQ好友列表(一)

    iOS开发UI篇—使用UItableview完成一个简单的QQ好友列表(一) 一.项目结构和plist文件 二.实现代码 1.说明: 主控制器直接继承UITableViewController // ...

  8. iOS开发UI篇—在UITableview的应用中使用动态单元格来完成app应用程序管理界面的搭建

    iOS开发UI篇—在UITableview的应用中使用动态单元格来完成app应用程序管理界面的搭建 一.实现效果 说明:该示例在storyboard中使用动态单元格来完成. 二.实现 1.项目文件结构 ...

  9. iOS开发UI篇—直接使用UITableView Controller

    iOS开发UI篇—直接使用UITableView Controller 一.一般过程 // // YYViewController.h // UITableView Controller // // ...

随机推荐

  1. iOS-项目搭建

    一.目的:一个小的项目当然不需要这么费劲的搞,到时一个大的项目要是不好好设计一下的话,写到后面就不知道怎么分类或者命名了,搞的项目很乱.为了更好的对本项目的查看,修改和后期的维护.一个好的项目的搭建不 ...

  2. Win10系统80端口被pid=4的System进程占用 -- 解决方法

    背景: 今天在家里电脑下载phpstudy 2016后,准备启动服务器,结果提示80端口被占用 过程: 百度后有这几种解决方法: 1.IIS占用 .SQL server 2008的报表服务占用 可惜这 ...

  3. thread_Disruptor

    转自 知乎 https://zhuanlan.zhihu.com/p/21355046 order从client端传入,decode后进行matching,一旦存在可成交的价格,就要publish到t ...

  4. wpf 自定义消息框

    相信很多人用过MessageBox.show(),是不是觉得这个消息框有点丑呢,反正我是觉得有点丑的,所以我自己重写了一个.先不说,上两幅图对比先: 当然,也不是很好看,不过比原有的好多了. 不多说了 ...

  5. 找到MVC框架中前端URL与后端同步的解决方案

    基本思路: 先用URL标签生成完整的URL字符,前端动态参数的部分以适配符先填充,最后动态参数利用正则匹配进行替换. 这种方式,可以在各种MVC框架中适用,妙. 不废话,上码. var url = & ...

  6. mysql 数据类型,字符集

    数据类型 1,数值类型2,字符串类型3,日期和时间4,ENUM和SET5,几何数据类型   数据类型选项 unsigned   无负值 zerofill        数值显示有影响,会前置0来填充不 ...

  7. [下载] MultiBeast 6.2.1版,支持10.9 Mavericks。Mac上的驱动精灵,最简单安装驱动的方式。

    下载地址1:http://pan.baidu.com/s/1i3ier9F 下载地址2:http://www.tonymacx86.com/downloads.php?do=cat&id=3 ...

  8. Git分支(远程)

    1.远程分支的表示形式:远程仓库名称/分支名,如:origin/master:   2.一次Git克隆会建立你自己的本地分支:master和远程分支:origin/master,它们都指向origin ...

  9. java开发-技能要求-分词频度统计

    描述: 一哥们离职找工作,最近聊了聊面试待遇要求一类的事情,有些感触. 在一个公司呆的时间长了,对市场上对开发的要求已经不那么敏感了,也不知道人家要求哪些技能.一个公司的业务是有限的,呆了2年,3年, ...

  10. HTML5中的canvas基本概念及绘图

    * Canvas(画布) * 基本内容 * 简单来说,HTML5提供的新元素<canvas> * Canvas在HTML页面提供画布的功能 * 在画布中绘制各种图形 * Canvas绘制的 ...