【发布时间】:2014-09-21 10:43:56
【问题描述】:
我目前正试图找出我在使用以下基于约束的 UITableViewCell 布局 (iOS 8) 时做错了什么。
我的单元格的布局如下图所示:
左边有一个图像视图,右边有一个标签,两者都应该接触到单元格边缘。图像具有固定尺寸(64x64),标签的高度总是小于那个。我希望图像的高度使单元格将高度扩展到正确的值(图像高度 + 2 * 边距)。
问题是这样的:我对垂直尺寸有三个约束,V[Image(64)]、Reset.bottom == UITableViewCellContentView.bottomMargin 和 Reset.top == UITableViewCellContentView.topMargin(均通过情节提要定义)。当我显示单元格时,我得到一个不可满足的约束错误。 UIView-Encapsulated-Layout-Height 约束干扰了我的约束,并且自动布局打破了我的图像视图高度约束。一切看起来都应该如此,但我不喜欢运行时出现错误。
如果我给我的高度限制优先级 999,一切看起来都很好,没有错误。
所以我的理解是,我的高度限制在运行时在这两种情况下都会被打破。
但是当我完全删除高度约束时,图像会显示在其原始高度(文件的分辨率与我在单元格中显示的分辨率不同)。为什么会这样,或者我在这里做错了什么?
编辑/更新:我刚刚注意到我对一切正常工作都错了。我的单元格的初始显示很好,但是当单元格发生变化时(在我的情况下,我正在移动另一个简单的单行标签,它下面的单元格)我的单元格将其高度更改为默认行高(44 pts),挤压图像进行中。这两种情况都会发生,当自动布局打破我的约束或当我将高度的优先级降低到 999 时。我真的不知道如何让这些单元格做我想做的事。
【问题讨论】:
-
他们是否在 iOS 8 中做了一些新的事情,您现在可以从单元格本身调整表格视图单元格的大小?
-
是的,动态单元格高度有些问题。这是我认为的一切自动布局计划的一部分。基本上,
tableView:heightForCellAtIndexPath应该不再需要了。 -
如果是这样,它需要比在 iOS 7 中快几倍。我在单元格中使用了自动布局(即使
tableView:heightForCellAtIndexPath返回相同的值),而且速度非常慢。
标签: ios uitableview autolayout ios8