UITableView部分的标题高度:如何在swift中顺利更改它?

时间:2017-04-26 19:14:58

标签: ios swift uitableview

我正在尝试通过此方法将高度乘数从0更改为1来创建tableView节标题的平滑外观:

  

.sectionHeaderHeight.multiply(by:_)其中_应该是CGFloat。

代码:

override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {       
   tableView.sectionHeaderHeight.multiply(by: _)
}

不幸的是,标题似乎只能为0(隐藏)或1.

除了1之外的所有内容都会破坏UI,0到1之间的所有内容都会生成error

  

***断言失败 - [UISectionRowData refreshWithSection:tableView:tableViewRowData:],   /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3600.7.47/UITableViewRowData.m:443

2 个答案:

答案 0 :(得分:3)

要更改标题部分高度,请覆盖方法heightForHeaderInSection

public override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return 20
}

这可能会解决您的问题。

答案 1 :(得分:2)

我建议在设置标题视图本身时添加转换,而不是尝试在何时显示动画。 请添加您选择的动画

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let aHeader = UITableViewHeaderFooterView()
    let header = aHeader as UIView
    var headerFrame = tableView.frame
    headerFrame.size.height = 100
    header.frame = headerFrame

    let transition = CATransition()
    transition.duration = 1.0;
    transition.type = kCATransitionPush; //choose your animation
    header.layer.add(transition, forKey: nil)
    return header
}

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return 100
}