我有一个UITableView
,其中有几列数据。可重用单元格从xib文件加载,该文件具有适当的标签和自动布局约束。一切都很完美;表格列在不同设备上以及旋转设备时正确布局。
我遇到的问题是尝试创建一个表格页脚来显示表格中列的总数。
我创建了一个xib文件,它具有与单元格xib文件相同的自动布局限制,并以tableView.viewForFooterInSection
加载它,就像我对单元格所做的那样。根据需要,我使用UITableViewHeaderFooterView
的子类而不是UITableViewCell
。
awakeFromNib
子类中的UITableViewHeaderFooterView
方法设置背景颜色,因此我可以看到它在所有设备/方向上的大小正确,但是页脚xib文件中的标签没有得到布置以匹配表格单元格。
来自页脚xib文件的自动布局限制未得到遵守。当我在页脚xib文件中设置不同的背景颜色时,表格页脚会显示xib视图长度的背景颜色。
我是所有这项技术的新手,非常感谢帮助解决这个令人难以置信的令人沮丧的问题。
有没有办法对从nibs加载的UITableViewHeaderFooterViews
使用autolayout?
答案 0 :(得分:1)
您应该致电setNeedsUpdateConstraints()
更新您的观点。
来自Apple文档
控制视图的约束是否需要更新。 当自定义视图的属性以会影响约束的方式更改时,可以调用此方法来指示 约束需要在将来的某个时候更新。系统 然后将调用updateConstraints作为其正常布局传递的一部分。 在需要之前一次更新约束确保了 你不会在多重时不必要地重新计算约束 在布局过程之间对视图进行了更改。
此外,您可以更新查看投掷layoutSubviews()
布置子视图。这个方法的默认实现 iOS 5.1及更早版本没有任何内容。否则,默认实现 使用您设置的任何约束来确定大小和位置 任何子视图。子类可以根据需要覆盖此方法 执行更精确的子视图布局。你应该覆盖 此方法仅在基于自动调整和基于约束的行为时使用 子视图不提供您想要的行为。你可以使用你的 实现直接设置子视图的框架矩形。 您不应该直接调用此方法。如果你想强迫一个 布局更新,请先调用setNeedsLayout方法 到下一个图纸更新。如果你想更新你的布局 立即查看,调用layoutIfNeeded方法。