ios开发中如果autolayout来作tablecell的话,假设tablecell分有图没图的场景,如何做cell比较好?

发布于 2022-09-01 12:58:48 字数 122 浏览 14 评论 0

1、为有图的做一个cell,为没图的也做一个cell?
2、就做一个cell,然后用代码方式动态计算cell的高度(似乎抛弃了autolayout)?

以上两种方式,那种方式更优,还望老鸟们来指导一二!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

若水微香 2022-09-08 12:58:48

那两个 cell 是大部分都不一样,还是只有 有图/没图 这一点不一样呀?

如果大部分不一样肯定是做两个cell好。

如果只是有图没图的区别,这个说实话之前我也觉得有点麻烦……首先你要注意的是,如果一个 view 用了autoLayout,那么你用代码设它的frame就不管用了。

如果不想用代码动态计算高度的话,可以把约束动态生成。就是把跟图片有关的约束先不要添加(如果是xib画的,勾上那个remove at build time),然后在运行时判断:如果图片显示的话就添加与图片相关的约束,如果不显示的话就添加一个相对于别的view(比如contentView)的约束。重用cell的时候还要记得调整。这样听起来确实有些麻烦。

另外一种方法就是把view里面的元素多参照 contentView 的高度排,然后高度用代码动态计算。总之避免不了写一点代码。

除此之外还有一些其他方法,比如给image设一个height或width的constraint,然后不显示时把constant设成0……(只适合图片挨边的情况,不然会多出一条空白间隔)或者有玩优先级的…… 不过这些都需要根据 cell 的具体情况具体定啦。

说实话我觉得autolayout在面对这种,视图元素可能显示、可能不显示的情况,确实是显得有些劣势,也不知道有没有什么简单点的办法。抛砖引玉,期待更好的答案。

苏佲洛 2022-09-08 12:58:48

我觉得可以采用UITableView-FDTemplateLayoutCell
这是iOS7以后都可以用的,利用autolayout的方式来自动计算cell的高度。可以返回每一个cell的高度。

说一下我的做法,虽然我觉得十分的不合理...但是我还是用了。

我开始判断了有没有图片。有的话设置一个约束,没有的话又设置一个约束。这样就可以自动计算了。
顺便说一下,我是纯代码手写的约束。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文