【发布时间】:2015-02-28 13:58:11
【问题描述】:
这应该很简单,但看来我需要联系并询问其他人是否遇到过这种情况......
我有一个针对 iOS 7+ 的 xcode 6 项目。我正在使用故事板和autolayout。我创建了一个UIViewController,放在UITableView 上,然后在UITableView 上放置了3 个不同的原型单元,每个单元都有不同的高度。每个 proto cell 都有自己的 UITableViewCell 类,UIElement 相应地链接。
这些原型单元格是在情节提要的 GUI 编辑器中设计的,每个单元格都有固定的高度。永远不会像这样长高:Using Auto Layout in UITableView for dynamic cell layouts & variable row heights
我不断发现的所有示例的问题是它们都使用单个原型单元格,并根据内容改变高度(即,他们使用UITextView 并根据文本的多少调整单元格高度在视图中)。
由于我的原型单元格已经在情节提要中设计,并且它们永远不会超过动态内容的设计高度,所以我要做的就是在将它们添加到表格时按照设计显示它们。
我在cellForRowAtindexPath 中使用switch 语句来根据indexPath.row 确定要使用哪个UITableViewCell 类。
我在一个数组中创建了一些虚拟数据,并使用它来构建一个包含 3 行的表格,以查看表格中呈现的 3 种类型的单元格中的每一种。
这一切都在 iOS8 上完美运行。然而,在 iOS7 上,我的三个单元格在视觉上最终都堆叠在一起。
为了咧嘴笑,然后我实现了一个heightForRowAtIndexPath 方法,并简单地使用一个开关来确定我正在处理的indexPath.row,然后返回原型单元格的高度(来自情节提要中显示的尺寸)设计师)。这应该是一种简单的硬编码方法,用于查看是否需要 heightForRowAtIndexPath 来解决问题。
同样,在 iOS 8 上运行良好,但在 iOS7 上,所有 3 个单元都堆叠在一起。
我想一个基本问题是:由于我使用的是故事板设计的原型单元,这些原型单元中的所有 UIComponent 都有固定的大小和约束,为什么这在 iOS 7 上不起作用?
我试图避免添加大量代码,只是让它在 iOS7 上工作。
【问题讨论】:
-
hmm...您是否尝试在不同大小的 iOS 7 设备/模拟器中运行该应用程序,并在情节提要上使用不同的十字准线对齐工具设置?这可能是罪魁祸首,当尺寸改变时你的对齐有问题。可能它在 iOS8 上正确显示只是因为 iOS8 足够聪明,可以为您纠正这些错误。我以前有类似的问题。所以,这只是我的猜测。希望这会有所帮助。
-
每个单元格中的 UI 组件布局正确。问题是细胞是相互堆叠的。看起来您采用了三个不同的 UIView 并将它们设置为相同的 x/y 原点。它们不会像您期望的那样线性(一个接一个地)出现在表格中。
-
直截了当的方法应该行得通,我曾经做过很多次,你能发布一些故事板的截图以及你如何配置这些单元格吗?
标签: ios xcode uitableview