IOS之UI -- UITableView -- 2 -- 等高的Cell

内容大纲:

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图片。


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

时间: 2024-09-30 03:08:03

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

iOS开发系列--UITableView全面解析

概述 在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似于微信.QQ.新浪微博等软件基本上随处都是UITableView.当然它的广泛使用自然离不开它强大的功能,今天这篇文章将针对UITableView重点展开讨论.今天的主要内容包括: 基本介绍 数据源 代理 性能优化 UITableViewCell 常用操作 UITableViewController MVC模式 基本介绍 UITableView有两种风格:UITableViewSt

iOS开发UI篇—UITableviewcell的性能优化和缓存机制

iOS开发UI篇-UITableviewcell的性能问题 一.UITableviewcell的一些介绍 UITableView的每一行都是一个UITableViewCell,通过dataSource的 tableView:cellForRowAtIndexPath:方法来初始化每⼀行 UITableViewCell内部有个默认的子视图:contentView,contentView是UITableViewCell所显示内容的父视图,可显示一些辅助指示视图 辅助指示视图的作⽤是显示一个表示动作的

iOS开发之UITableView与UISearchController实现搜索及上拉加载,下拉刷新实例代码_IOS

废话不多说了,直接给大家贴代码了. 具体代码如下所示: #import "ViewController.h" #import "TuanGouModel.h" #import "TuanGouTableViewCell.h" #define kDeviceWidth [UIScreen mainScreen].bounds.size.width #define kDeviceHeight [UIScreen mainScreen].bounds.

iOS 7 UI 过渡指南 - 支持续 iOS 6(iOS 7 UI Transition Guide - Supporting iOS 6)

iOS 7 UI Transition Guide Preparing for Transition Before You Start Scoping the Project Supporting iOS 6 Updating the UI Appearance and Behavior Bars and Bar Buttons Content Views Controls Temporary Views Supporting iOS 6 If business reasons require

iOS开发UI篇—popoverController使用注意

iOS开发UI篇-popoverController使用注意 iOS开发UI篇-popoverController使用注意 一.设置尺寸 提示:不建议,像下面这样吧popover的宽度和高度写死. 1 //1.新建一个内容控制器 2 YYMenuViewController *menuVc=[[YYMenuViewController alloc]init]; 3 4 //2.新建一个popoverController,并设置其内容控制器 5 self.popover=[[UIPopoverCo

iOS 7 UI 过渡指南 - 界定范围(iOS 7 UI Transition Guide - Scoping the Project)

iOS 7 UI Transition Guide Preparing for Transition Before You Start Scoping the Project Supporting iOS 6 Updating the UI Appearance and Behavior Bars and Bar Buttons Content Views Controls Temporary Views Scoping the Project Knowing your app's compat

iOS 7 UI 过渡指南 - 开始之前(iOS 7 UI Transition Guide - Before You Start)

iOS 7 UI Transition Guide Preparing for Transition Before You Start Scoping the Project Supporting iOS 6 Updating the UI Appearance and Behavior Bars and Bar Buttons Content Views Controls Temporary Views Before You Start iOS 7 introduces many UI cha

iOS 的 UI,Android 微信 5.2 的功能架构变得更加清晰

微信5.2改变了此前统一使用 iOS 的 UI,Android 微信开始遵循设计规范了.主界面去除了底部的 Tab Bar,在顶部则使用了 Action Bar,并用 Tab Host 来组织内部界面. 本文由腾讯研发管理部高级设计师 Vertu 所分享,他以产品设计师的视角,对比解读了微信的旧容与新妆,也讲了Android版微信5.2放弃iOS UI设计背后的故事. 1 月 21 日,新的 Android 版微信在应用宝上线内测,很多用户第一时间更新了.在这个微信5.2内测版中,我们可以看到界

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

一.一个简单的英雄展示程序 NJHero.h文件代码(字典转模型) 1 #import <Foundation/Foundation.h> 2 3 @interface NJHero : NSObject 4 /** 5 * 头像 6 */ 7 @property (nonatomic, copy) NSString *icon; 8 /** 9 * 名称 10 */ 11 @property (nonatomic, copy) NSString *name; 12 /** 13 * 描述 1