UITableViewCell结合Masonry布局

作者: HHHHHHHHHHD | 来源:发表于2015-10-20 20:01 被阅读10296次
UITableView-FDTemplateLayoutCell与Masonry结合的妙处

最近在看🐑神的博客,发现里面的优化UITableViewCell高度计算的那些事这篇博客写的很精髓。🐑神是用storyboard写的。然后我参照🐑神UITableView-FDTemplateLayoutCell的demo,自己写了一个UITableView-FDTemplateLayoutCell结合Masonry去写的cell布局。在这途中遇到不少坑,主要就是Masonry用的不熟练。Masonry的详细用法
点击蓝色的可以到库的解释文档

先上效果图,然后再一步一步讲解。讲解的不是很好。求大神指点。
demo.gif
这里的话就不说数据的解析了。因为我是本地的json数据解析。直接开始cell的布局。
结构图.png
图上的0,1,2,3,对应的cell(TableViewCell)里面的view。在这里我是把这个cell分为了4个模块。创建极其初始化。

板块0publicView的创建(适配代码在讲完版块3创建之后)
创建.png
板块一TopGroupView的创建
版块1.png

布局代码,里面有解释

板块一代码.png
板块二MidGroupView的创建
板块二.png

![版块二代码.png . . .].png](http:https://img.haomeiwen.com/i1027569/d0f0ec7f761de359.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

板块三UnderGroupView的创建
板块三.png 板块三代码.png
最后来到publicView版块0的布局
版块0代码.png

这样就把全部布局搞定了。就可以看到效果图了。


观察🐑神的demo。
观察🐑神的demo.png

在这里可以发现。当如果是用纯frame的计算时候,是要进行上面代码的操作。并且cell.fd_enforceFrameLayout = NO;默认是等于YES的。在使用Masonry时候不用进行这些操作。

这个使用🐑神的库很简单,只需要导入

"UITableView+FDTemplateLayoutCell.h"
"UITableView+FDTemplateLayoutCell.m"
然后在结合Masonry使用就可以了。

来到最后一步

这个方法在🐑神类里面已经封装好了。直接调用就可以。


写这个方法.png

写完了。感觉表达能力还是很差。很多都不知道怎么表达。不过还是希望可以帮到各位。有什么问题可以留言我,我看到就会马上回的。

Demo地址。喜欢的给个赞吖。

相关文章

网友评论

  • 舒马赫:Masory写的很棒,但是不喜欢纯代码写界面,太慢了,另外由于autolayout先天原因布局速度是比较慢的,会影响帧率。推荐使用xml的布局库FlexLib,采用前端布局标准flexbox(不使用autolayout),支持热刷新,自动计算高度等。可以到这里了解详细信息:

    https://github.com/zhenglibao/FlexLib
  • aydwb:fd_enforceFrameLayout默认是等于NO吧 会出错的情况应该是用自动布局还设置fd_enforceFrameLayou=YES;或者手动布局忘了写sizeThatFits方法
  • 5c2ad94c9daf:大神,问一下,为什么需要建一个publicView容器来装所有的子view呢,为什么不能直接把子view都放到cell的contentview上,这样处理有什么好处吗?
  • unhangcorn:感谢,好人一生平安.
    大神有没有遇到label太多行时高度计算不准的情况啊?
  • niuxingyu:所有cell都重叠在一行是什么情况呢?
    e0c1a64e624a:楼主 你好 使用 masonry和FD 一直约束冲突 <NSLayoutConstraint:0x60000008e290 UITableViewCellContentView:0x7fba75c36120.width == 414>,
    <NSLayoutConstraint:0x600000084380 UITableViewCellContentView:0x7fba75c36120.width == 0>,怎么解决 ?
    HHHHHHHHHHD:@niuxingyu 不会吧 你是不是没有约束好。
  • 63f2dd559f52:cell中东西较多时,会出现问题
  • 蛮荒星域:我想请问下,如果cell中有展开和缩回的功能,那么视图的高度应该如何控制呢?用masonry。手动计算高度并调整的话这个是容易实现的,如果只是用masonry和FD结合呢?
    蛮荒星域:@我本善良 晚上回去发给你,你留个地址或其他的,或是再交流一下
    蛮荒星域:@我本善良 嗯,解决了!结合masonry跟FD已经实现了,很简单。
    我本善良:现在有解决的思路没?masonary实现cell的折叠效果
  • iamgaoshuai:布局代码为什么也是写在init方法里面 而不是layoutSubviews
  • LeeDev:写的太详细了,给个赞,先看看,再来评论
  • hhgvg:字体大小和cell高度没适配
  • 雨雪霏霏why:我用Masony布局cell,发现tableview 滑动卡顿,求大神解答如何优化
  • 听小马儿说:下载下来无法解压
  • cydida:按照你的demo 高度计算出来有问题
    ** FDTemplateLayoutCell ** calculate using auto layout - 0.5
  • 72dd446d8e3a:多张图片怎么处理啊楼主,求助
  • 986d14688d75:楼主我设置的和你一样怎么没有效果呢?也用的masonry,能加q详细聊一下吗?我qq:422538722
  • 篮球火:如果是用xib自动布局建立的cell,如何使用这个
    HHHHHHHHHHD:@篮球火 那你就要去看fd的原博客。我是习惯纯代码
  • 3471c4738abf:1,fd就是预先调用了一遍Cell的布局,然后对高度做了缓存,等到cellForRowAtIndexPath的时候又调用了一遍cell的布局。要是布局只有一次就好了,比如布局到一个containerView上,不过我用masonry没能实现。。。
    2,对于Cell内容是变化的,即高度也是变化的时候,fd的缓存会有问题吧。
    HHHHHHHHHHD:@duanhjlt 建议你再看下FD的库。以及布局的问题。
  • KK_boy:大神 多张图片怎么处理啊
    HHHHHHHHHHD:@fengege 大爷!你才是大神!
  • godgnay:请问,如果图片是一个URL,不知道SIZE怎么办?怎么做高度的适配?
    godgnay:@像孩子一样 我还试了试 其实也能出来图,但是要拖动之后,因为图下载之后再次拖动才会改变布局。
    godgnay:@像孩子一样 现在服务器给的数据没有size,是不是要自己写一个定的大小比较好啊?
    HHHHHHHHHHD:@shengyang_yu 让服务器给回一个size也可以
  • 147a074a64d1:demo 崩溃了
    口袋海贼王_:我曹大哥,
    HHHHHHHHHHD:@智同宏盛 你去重下噢。
    HHHHHHHHHHD:@智同宏盛 不会崩溃啊。我自己刚刚下载了。没事哦。你崩溃是报什么哦
  • 6fdb0c58ceca:学习一下,今天刚把FD用到项目里边
    HHHHHHHHHHD:@碧野MAX 😂你看到有什么写的不好的提醒下看
    6fdb0c58ceca:@像孩子一样 是的,用Masonry
    HHHHHHHHHHD:@碧野MAX 好好用。你是纯代码么?
  • bb19f132a87c:Demo可以放出来吗?
    bb19f132a87c:@像孩子一样 棒棒哒^_^
    HHHHHHHHHHD:@nerver_more 就是这个哦https://github.com/LHDsimon/UITableVlewDemo :smile: 有什么写的不好的 指导下 :relaxed:

本文标题:UITableViewCell结合Masonry布局

本文链接:https://www.haomeiwen.com/subject/ihzzcttx.html