此UI允许用户在空白处键入答案(TableViewCells),标题将使用填入原始问题的空白预览最终答案。
例如,这里的问题提示应该是“构成水分子的元素是(_____)和(_____)。”
但是UI显示:
如您所见,标题视图正在截断内容。我希望视图调整大小以适应任何文本,即使用户键入和ext更长。这是用于创建标题视图的TableViewController代码:
override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let cell = tableView.dequeueReusableCell(withIdentifier: "OPCell") as! WhatTheBlankOriginalPostTableViewCell
cell.OriginalPostLabel.text = WhatTheBlankUtility.PostText(post: (post?.content.text)!)
opCell = cell
let view = UIView()
view.addSubview(cell)
let margins = view.layoutMarginsGuide
cell.leadingAnchor.constraint(equalTo: margins.leadingAnchor, constant: 8).isActive = true
cell.trailingAnchor.constraint(equalTo: margins.trailingAnchor, constant: 8).isActive = true
cell.topAnchor.constraint(equalTo: margins.topAnchor, constant: 16).isActive = true
cell.bottomAnchor.constraint(equalTo: margins.bottomAnchor, constant: 16).isActive = true
return view;
}
请注意,我包装了标题视图(最初是一个单元格,自动调整大小并且工作正常!但是每当它更新大小时 - 我都使用
Tableview.beginUpdates()
Tableview.endUpdates()
如果你向下滚动得太远,整个tableview都会抖动,如果你向下滚动太远而没有空白,那么标题视图就会消失。我看到的理论是因为我返回了一个TableViewCell而不是一个UITableViewHeaderFooterView ,当tableview不再认为单元格在视图中可见时会被破坏。这是为了解决我在括号中提到的问题。原谅我糟糕的思想组织。
我还尝试通过将单元格内部固定到代码中的视图边界(自动约束)来调整标题视图的大小。没有运气 - 当用户输入并且字符串变长时,标题视图的大小没有变化。
答案 0 :(得分:0)
如果您在viewForHeaderInSection
中创建新视图并添加约束,则会导致奇怪的行为。对于初学者,每次调用viewForHeaderInSection
时都会添加新约束。因为,在添加到此方法之前不会删除约束,它将导致重复约束,我只能想象这将是一场噩梦。一个简单的解决方案是在cell.contentView
方法中返回viewForHeaderInSection
。