我目前有一个tableView
。在viewDidLoad
中的ViewController中,执行以下操作:
public override function viewDidLoad() {
let footerView = bundler.loadNibNamed("FooterView")
tableView.tableFooterView = footerView
tableView.tableFooterView.preservesSuperViewLayoutMargins = true
tableView.tableFooterView.backgroundColor = UIColor.black
}
问题1:
如何设法增加tableFooterView
到最后一个单元格的距离?更改单元格的layoutMargin
就可以了。更改footerView.layoutMargin
并没有任何效果,到最后一个单元格的距离很小。
问题2:
footerView.preservesSuperViewLayoutMargins = true
和设置layoutMargins
都不起作用,并且footerView一直扩展到tableView的左右边界。如何使footerView
尊重tableView的边距?
这是FooterView.xib
文件的重要部分:
<view contentMode="scaleToFill" id="W6V-Yi-de6" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="431" height="32"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="tJT-kB-OPd">
<rect key="frame" x="0.0" y="0.0" width="355" height="32"/>
<state key="normal" title="bla bla bla">
<color key="titleColor" white="0.66666666669999997" alpha="1" colorSpace="calibratedWhite"/>
</state>
<connections> … </connections>
</button>
</subviews>
…
</view
这是最终代码:
public override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
let footerView = FooterView.loadNibNamed("FooterView")
footerView.frame = CGRect(x: 0, y: 0, width: tableView.frame.width, height: 40.0)
let frame = footerView.frame
tableView.tableFooterView = footerView
let backgroundView = UIView()
backgroundView.backgroundColor = .green
let containerView = UIView(frame: CGRect(x: 10, y: 10, width: frame.width - 20, height: frame.height - 10))
containerView.backgroundColor = .red
backgroundView.addSubview(containerView)
footerView.backgroundView = backgroundView
}
这是生成的图像:
有人知道热footerView
(基本上是文本bla bla bla
)位于红色containerView
的中间吗?
答案 0 :(得分:1)
您可以在View
内使用FooterView
内的容器cell/tableView
。参见下面的示例,
class MyFooter: UITableViewHeaderFooterView {}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
let tableViewFrame = tableView.frame
let footer = MyFooter()
footer.frame = CGRect(x: 0, y: 0, width: tableViewFrame.width, height: 150)
tableView.tableFooterView = footer
let frame = footer.frame
let backgroundView = UIView()
backgroundView.backgroundColor = .green
let containerView = UIView(frame: CGRect(x: 8, y: 8, width: frame.width - 16, height: frame.height - 16))
containerView.backgroundColor = .red
backgroundView.addSubview(containerView)
footer.backgroundView = backgroundView
}
下面是输出
您可以更改containerView
x, y, width and height
来调整边距。
少量注释
1) viewDidLoad
并不是设置约束的好地方。最好使用上述方法。
2)不建议更改FooterView的backgroundColor,因此最好不要对其进行更改。
tableView.tableFooterView.backgroundColor = UIColor.black