我的目标是在运行时更改UITableView部分标题高度。让我更具体一点。默认高度为44但在触摸顶部之前滚动,高度将为64.我创建了UITableViewHeaderFooterView
的子类,它使用自动布局。
我试过
var frame = sectionHeader.frame
frame.size.height = 64
sectionHeader.frame = frame
以及
tableView.sectionHeaderHeight = 64
但对我来说没什么用。任何人都可以对这个问题有所了解。
答案 0 :(得分:1)
可选的func tableView(_ tableView:UITableView,heightForHeaderInSection section:Int) - > CGFloat的
答案 1 :(得分:1)
您不需要对页脚进行子类化以改变我的身高。
tableView.sectionHeaderHeight = 64
[UIView setAnimationsEnabled:NO];
[tableView beginUpdates];
[tableView endUpdates];
[UIView setAnimationsEnabled:YES];
仅在不重新加载tableView的情况下更改高度。
答案 2 :(得分:0)
我认为你必须重新加载表视图的整个部分,因为没有公共API只用于更新部分标题。
self.isOnTop = true // or false
tableView.reloadSections(NSIndexSet(index: 0), withRowAnimation: .None)
并更改一个修改aproppriate委托方法返回值的属性:
func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
isOnTop ? 44 : 64
}
您还可以尝试以下方法,这些方法可以在不重新加载的情况下更新布局:
tableView.beginUpdates()
tableView.endUpdates()
或转移到支持tableview行为的集合视图解决方案:https://github.com/jamztang/CSStickyHeaderFlowLayout