在Swift中设置tableView标题的高度

ide*_*ara 22 uitableview uiview ios swift

我正在尝试在表视图控制器中设置位于原型单元顶部的视图的高度.我使用IB设置它的高度(尺寸检查器)并将其设置为61(绿色视图是'标题'视图):

标题视图

但每当我运行应用程序时,它的高度最终都会存在568.0.我有一个IBOutlet testUIView在我的表视图控制器中调用了视图,而且我确实:println("testUIView Height->\(testUIView.frame.height)")并且确实最终568.0在运行时.

以下是显示其运行时高度的屏幕截图:

在此输入图像描述

所以我的问题是:如何设置视图的高度,使其在运行时为61,所以它确实看起来像我的第一个截图(尺寸方面)?

我试图在里面设置'高度属性,override func viewWillLayoutSubviews()但它没有让我为高度赋值testUIView.frame.height = CGFloat(61.0).

任何帮助表示赞赏!提前致谢!

干杯!

Fre*_*ust 56

如果你想为UITableView使用标题,你可以在Interface Builder中设计另一个原型单元,根据UITableViewCell创建一个自定义类,并将它分配给类检查器的界面构建器中的原型单元格.

然后在你的控制器中你将要使用

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
Run Code Online (Sandbox Code Playgroud)

在该函数中,您实际上将从表视图中创建可重用的单元格,但是将其强制转换为您为标题创建的自定义单元格.你可以访问它的所有属性,比如常规的UITableViewCell,那么你只需要返回单元格的视图

return cell.contentView
Run Code Online (Sandbox Code Playgroud)

你将要使用的另一种方法是

func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return 61.0
}
Run Code Online (Sandbox Code Playgroud)

那个是非常自我解释的.

Swift 3.0.1

public override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return 61.0
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!有效!我想问的另一件事是......你知道任何技术让它始终保持在导航栏下方,即不与其他单元格一起滚动吗?还是不可能? (2认同)

小智 20

Swift 3/Xcode 8:

添加此内容viewDidLoad():

let HEADER_HEIGHT = 100
tableView.tableHeaderView?.frame.size = CGSize(width: tableView.frame.width, height: CGFloat(HEADER_HEIGHT))
Run Code Online (Sandbox Code Playgroud)

请享用!