如何利用 AutoLayout 实现 Collapable TableViewCell 的效果呢,大家来分享下经验~
同时想问下在使用了 AutoLayout 的情况下,如何比较智能自动地计算 UITableViewCell 的高度?据我所了解的有以下几种:
但是问题来了,如果我使用的是 UITableView-FDTemplateLayoutCell , Cell 里面的元素的高度是需要动态改变的(例如九宫格相册显示),那需要怎么配合使用呢?目前我的方法是根据图片的数量来设置该 View 的 HeightConstraint , ReloadData ,但是有时候会有 AutoLayout 的错误 Log = =
请大家指教指教
1
a412739861 2015-09-06 10:52:19 +08:00
自动计算行高?
如果有 autolayout 了。 在 iOS8 下, heightForRowAtIndexPath 下使用 UITableViewAutomaticDimension ,就好了吧,我自己的是这么做的……不过没图,只是文字。 iOS7 下面,取一个不显示在界面上的 cell ,把内容设置进去,然后 cellcontentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height + 1 就好了。 不过图片什么的我就不知道了…… |
2
xi_lin 2015-09-06 12:31:04 +08:00
我现在也在用 UITableView-FDTemplateLayoutCell
9 宫格我是用了`UICollectionView`同时根据数量定高算 collapable 也是改变高度约束然后 reloadData 你看到的错误 log 是什么内容? |
3
Sunnyyoung OP @xi_lin 我也是跟你一样诶,根据图片的数量来计算行数,从而得到 CollectionView 的高度,设置其 Height Constraint ,但是滚动的时候,有些 TableViewCell 的 CollectionView 的 Height Constraint 会报错。。但是计算没有错误阿,想不通= =
@a412739861 因为要兼容 iOS7 及其以上,感觉用 UITableView-FDTemplateLayoutCell 这个是比较好的选择,但是有图片,而且要根据图片数量来改变高度,就有点麻烦了 |
4
a412739861 2015-09-06 16:07:53 +08:00
@Sunnyyoung iOS7 就是我下面说的那个,不过直接复用第三方的就用呗。如果直接设置其他图片的高度为 0 呢
|
5
HappyHacking 2015-09-06 16:20:01 +08:00
楼主是想实现类似微信朋友圈那种样子吗?
我没实现过,不过我帮你看了一下微信朋友圈的 UI 结构: 收缩起来的: http://i3.tietuku.com/ca794ab2d1d7e53d.png 展开来的: http://i3.tietuku.com/c36ad0a73a62dfc7.png |
6
Sunnyyoung OP @HappyHacking 嗯,我也用 Reveal 看过,但是微信的布局没有用到 AutoLayout ,而我想知道用 AutoLayout 怎么实现比较好,毕竟现在 AutoLayout 已经算是一个趋势了吧~
|
7
HappyHacking 2015-09-06 16:31:16 +08:00
@Sunnyyoung 你怎么知道没用 AutoLayout 呢?哪里可以看出来?
|
8
Sunnyyoung OP @HappyHacking 如果使用了 AutoLayout , Reveal 是可以看到对应 Constraint 的
|
9
HappyHacking 2015-09-06 17:49:15 +08:00
搜噶, Thanks
|
10
xi_lin 2015-09-06 19:19:02 +08:00
@Sunnyyoung 你看看报出来的错是不是真的有不能满足的约束呗。推荐用 Masonry ,报错也更可读一点。
|
11
Sunnyyoung OP @xi_lin 想请问下你是在哪个地方更新 View 的 HeightConstraint 的呢
|
12
xi_lin 2015-09-07 10:57:24 +08:00
@Sunnyyoung `tableView:cellForRowAtIndexPath:`取出 cell 以后更新
|
13
Sunnyyoung OP @xi_lin 奇了个大怪了,我也是这样的,但是还是报错,计算没问题的阿
|
14
xi_lin 2015-09-07 14:39:23 +08:00
@Sunnyyoung 你加大两倍 height 看看能不能消除错误。如果能那就是你计算有问题。
|