不等高cell自定义的思路精髓

## 精华界面不等高cell的搭建

1 . 精华界面搭建,tableview展示数据;

不等高cell(复杂界面)

1.1 划分结构(功能结构)top view  middle  view   最热评论view  底部的view

1.2 搭建界面方式:纯代码 (因为有些结构不确定是否显示)

1.3. 当cell一开始创建的时候,把所有子结构全部添加上去;

知识点:

通过注册class创建cell;那么cell创建的 方式initwithStyle

通过代码创建cell,必定来initwithStyle 方法

不会来到initWithframe

什么时候来到initWithframe方法呢?控件通过init方法 才会执行initWithframe

通过XIB就必定来到 awarkFromeNib ;

A .cell不同架构流程思想:

1.顶部view的展示:

自定义cell,因为有些功能系统可能实现不了,所以需要自定义cell;

由于整个cell可以大致分为4个模块,并且都有自己的功能与逻辑;再自定义View.XIB;

2.数据传值;

自定义cell中拿不到XIB中控件,传不了值;需要跨多个类传值;

所以每个类当中定义模型属性。传值,重写set方法;

3.计算cell的frame

在哪里计算?

一般是在heightForRowAtIndexPath:方法中进行计算,但是这个方法调用频率非常高;所以最好只需要计算一次就行;在数据请求成功的时候,但是cell还没有刷新的时候就计算好高度就可以;

疑问:在显示cell的时候,为什么文字有的能显示,有的只显示一半,有的超过了cell的高度;

猜算,估计是cell的循环利用出现错误;

4.MVVM思想:

将模型中保存的数据给到视图模型;取数据,存数据都是存视图模型当中;

VM专门去处理视图业务逻辑,计算视图子控件frame

抽取思路:

a. 创建视图模型 (nsobject)

b. 请求数据,字典数组变成模型数组,定义指针指向他;

c. 遍历模型数组;创建视图模型,将遍历出的模型数据给到视图模型;

d. 视图模型:定义模型属性保存传入的数据;

注意:在传值的时候就直接把cell的frame计算出来;

e.  重写set方法;在set方法中给cell计算尺寸;

f. 在外面定义属性保存cell的frame;和topView的frame

为什么要定义两个?、??

因为一个cell里面包含了topview,还有其他的view,并且之后的view都是添加到top view的后面的;

B .中间图片展示

1.架构搭建;

为什么要用XIB去做???

因为中间的图片有可能显示图片,视频,音频。或者不显示;那这个时候就不怎么好去做,只要是不确定的控件,

该隐藏的隐藏,不该隐藏的就显示,做个判断就可以;

A. 注意点,在进行命名的时候;一定不要把XIB的名字设置成跟某一个控制器的名称一样;如果一样,那么在加载过程中,底层会先判断该文件当中,有没有同名的view,或者去掉controller的view,只要有一个符合,那么控制器首先就会去加载这些相同的view;

B.描述XIB时,他的frame不用去管,只需要确定内部子控件的约束就行;具体的frame在外面才计算

C.设置picture view的尺寸,它的Y值是以top view  cell 的高度为基准;

D.不要犯SB错误了;

因为在initwithstyle 方法中加载picture view的时候,尽然用了alloc  init  ,却没有调用加载XIB的类方法;死活出不来数据

C.中间图片的细节处理

问题1. GIF图,不是大图,就把点击查看大图按钮隐藏起来;

问题2 . 大图又太长。并且有些大图宽度是不够的,如何解决?

设置图片的高度的时候,判断H是大于屏幕的高度,是的就将H定在某个值;并且记录当前是大图,赋值Yes;

在下载图片完成的时候,将图片画出来;

画之前,最好判断是不是大图,不是就不用画;

a.开启图形上下文;带有三个参数的;第一个,绘画的范围;第二,填NO 第三 。0 就行

b。画图

c. 获取绘画的图片;

d.关闭上下文,

e.将最新的图片赋值回去;

D.下载进度条的处理

进度条,一般都是去github去搜索,别人的一些框架;都是下载回来就用

利用终端下载框架;

包含头文件

思路:

1.控件通过XIB,一定会来到awerkFromeNib方法;

a.设置进度条的颜色,以及进度值;

进度条

2.重写SET方法

a.图片下载到到沙盒

b. 如果沙盒中有,直接让进度条变为0;不下载;

c.如果没有,就下载;

事先把进度条清0;利用SD框架下载

如何让下载的进度显示文,真实的数据滚动???想要显示进度条,在progress中显示;


E,视频界面搭建处理

视屏也用XIB描述

a. 他的frame只需要设置一次就可以了,将frame修改为统一的属性描述;

b.如何加载视屏类型???

c.在加载数据的时候,增加相对应的参数值,下载的数据就会不一样;

d.模型中添加界面需要的属性值;

e.cell中获取数据的时候,判断一下,返回的是什么类型的参数;不要的隐藏,要的显示;

f.   拿到控件进行赋值的时候;要求记录多少时间;

g.每个类都需要加载XIB,并且拥有模型属性;

抽取一个基类,将模型,加载XIB方法,添加进去,子类继承他自然就会有父类的方法

G: 音频界面搭建处理:

a.音频I的XIB搭建;

b.cell中传递数据信息,进行判断; 类型是音频,就把其他控件,视频,图片隐藏; 不是音      频,就全部隐藏,就是段子

c.数据赋值注意点

时间的算法跟上图的一样;

H:最热评论view搭建,分析

a. 有可能出现两种不同的情况;

1.只有评论,没有声音;

2.只有声音,没有评论;

XIB中评论先确定好位置;然后再往lable上面添加一个view;view里面放其他控件;

b. 搭建完,查看数据并设置模型属性

1.特点,数组中包含字典,字典包含字典;复杂层次结构;

解决思路:开发中碰到这种情况;一般是一个字典对应一个模型;如果用数组去解决的话,很麻烦;


1.1 利用MJ框架,MJ框架底层是在做什么事情呢?

mj框架转模型,底层会去遍历模型的属性;去文件中找,找到了就会帮他去赋值;

1.2,如何将数组中的值转换到模型属性中去?

取出数组中的第一个字典,kvc将字典转换成模型;

2。尺寸设定问题:

1. 视图模型中去写尺寸;视图模型专门处理这些视图控件的业务逻辑

1.1 判断是否是评论模型

判断模型中的属性有没有内容(文字),只要是判断,文字的内容就用length

是 ==》计算文字的内容;根据内容计算文字高度;

不是 ===》 另外计算;

1.2. 在view中对控件赋值;

还是先判断模型中有没有内容长度;

有===》就是文字评论   对文字进行一个拼接;

没有===》语音音频;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容