我使用UITableView来布局内容“页面”。我使用表视图的标题来布局某些图像等,我更喜欢它,如果他们没有浮动,但保持静态,因为他们做的时候,风格设置为UITableViewStyleGrouped。
除了使用UITableViewStyleGrouped,有办法做到这一点吗?我想避免使用分组,因为它增加了我所有的单元格的边缘,并要求为每个单元格禁用背景视图。我想完全控制我的布局。理想情况下,它们应该是“UITableViewStyleBareBones”,但我在文档中没有看到这个选项…
非常感谢,
根据@samvermette的回答,我已经在Swift中实现了上面的代码,以便于编码员使用Swift。
let dummyViewHeight = CGFloat(40)
self.tableView.tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: self.tableView.bounds.size.width, height: dummyViewHeight))
self.tableView.contentInset = UIEdgeInsetsMake(-dummyViewHeight, 0, 0, 0)
While thinking how to approach this problem, I remembered a very important detail about UITableViewStyleGrouped.
The way UITableView implements the grouped style (the rounded borders around the cells) is by adding a custom backgroundView to the UITableViewCells, and not to the UITableView. Each cell is added a backgroundView according to its position in the section (upper rows get the upper part of the section border, middle ones get the side border and the bottom one gets – well, the bottom part).
So, if we just want a plain style, and we don’t have a custom backgroundView for our cells (which is the case in 90% of the times), then all we need to do is use UITableViewStyleGrouped, and remove the custom background. This can be done by following those two steps:
将我们的tableView样式改为UITableViewStyleGrouped
在cellForRow返回单元格之前,添加以下一行:
细胞。开源视图=[[UIView alloc]这是一个细胞:跳跃]autorelease];
就是这样。tableView样式将变得完全像UITableViewStylePlain,除了浮动头。
希望这能有所帮助!
以下2种场景的最佳解决方案:
场景1:如果tableView样式不是.grouped。改成分组没问题。页脚不会浮动。
场景2:如果你只想在tableView的末尾有一个页脚。它的风格是朴素的
步骤:
最后再加一节。
确保在添加的部分有(nuberOfRowsInSection方法)零行数。
向该节添加自定义页脚。
将highightforfooterinsection设置为自定义页脚,将. 0设置为其他部分的页脚。
例子:
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
//注意:过滤你想要添加自定义section的section
let footerView = UIView()
submitOrganiser?.showFooterAtTheEnd(view: footerView) //my method to customise the footer, use your implementation
return footerView
}
@samvermette的解决方案的变体:
/// Allows for disabling scrolling headers in plain-styled tableviews
extension UITableView {
static let shouldScrollSectionHeadersDummyViewHeight = CGFloat(40)
var shouldScrollSectionHeaders: Bool {
set {
if newValue {
tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: bounds.size.width, height: UITableView.shouldScrollSectionHeadersDummyViewHeight))
contentInset = UIEdgeInsets(top: -UITableView.shouldScrollSectionHeadersDummyViewHeight, left: 0, bottom: 0, right: 0)
} else {
tableHeaderView = nil
contentInset = .zero
}
}
get {
return tableHeaderView != nil && contentInset.top == UITableView.shouldScrollSectionHeadersDummyViewHeight
}
}
}