结构体在父类构建中的使用

说明

  该思想来自同事LEAF,我是学习他的,非本人原创。(程序猿应该要尊重别人的成功,因此特写在最前。)

问题

  当项目中用到多种UITableViewCell(这实在是太常见了),其表面非常相似,但是又略有区别,属于可以拆分成不同部分的组合的时候,如何设计父类,会让代码更漂亮?

效果如图:

结构体在父类构建中的使用_第1张图片
情景1


结构体在父类构建中的使用_第2张图片
情景2
结构体在父类构建中的使用_第3张图片
情景3

  情景可以更多,此处不再一一列举。这些cell高度的相似,很明显都是由不同的组件组合一起的,在iOS中如何实现这样的父类,让不同的cell继承自同一个父类,来让自己的代码变得漂亮呢?

我们公司的解法

struct闪亮登场 :struct (C programming language) - Wikipedia

第一步:

  抽象:将cell抽象成四个部分,分别是Top,Content,Title,Footer,其中四个组件的样式又各有不同的组合,且各个组件本身可能存在,也可能不存在。

  废话不多说,直接上代码。

1. 不同部分组合(共四部分,可以配置成不同的组合,甚至可以使用 "|" 操作。):

结构体在父类构建中的使用_第4张图片
代码1

第二步:

  组装:使用结构体来组装我们需要的cell样式。

1. 大招大招,构造struct(构造一个结构体,来组装当前cell的各个部分):

结构体在父类构建中的使用_第5张图片
代码2

2. 代码实现:

结构体在父类构建中的使用_第6张图片
代码3

第三步:

  配置:配置初始样式。

1. 初始化基本样式,项目使用VFL布局,其中的imageContentRatio以及customerContentRatio是用来根据不同的UI调整内容的高度,子类可以重写)

结构体在父类构建中的使用_第7张图片
代码4

2. 正式组装,根据结构体组装UITableViewCell:

结构体在父类构建中的使用_第8张图片
代码5
结构体在父类构建中的使用_第9张图片
代码6

第四步:

  使用:是骡子是马,拉出来溜溜!

1. 新建UITableViewCell继承自该父类,只需要实现一个方法:(即可以实现一个没有top,中间是一个大图UIImageView,接下来是一个自定义的UIView,然后就是标题简介,最后就是一个带评论等信息的Footer,是不是很cool?)

结构体在父类构建中的使用_第10张图片
代码7

2. 更多调整,还可以实现以下方法,在子类中去调整cell不同部分所占的高度,Very easy,right ?

结构体在父类构建中的使用_第11张图片
代码8

写在最后

  由于暂时没有时间整理完整demo,稍后会在贴上github的demo链接,有关本案例中牵涉到的如何使用VFL计算UITableViewCell高度等内容,会在之后章节中分享,并期待大家分享你们的更好的解决方案。

  PS:该实现思路来自于同项目组的同事LEAF,在此对他表示感谢

你可能感兴趣的:(结构体在父类构建中的使用)