我是swift的IOS开发新手,我遇到了问题。我需要创建一个tableview,它看起来几乎是我想要的方式,除了表格第一部分顶部的空间。它没有名字,但我想减少顶部和第一个项目之间的空间。我能够做的是根据下面的代码和图片:
override func numberOfSections(in tableView: UITableView) -> Int {
return 2
}
override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
switch (section) {
case 0:
return ""
default:
return self.nameSection2
}
}
override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerView = UIView()
headerView.backgroundColor = UIColor.white
let headerLabel = UILabel(frame: CGRect(x: 15, y: 8, width:
tableView.bounds.size.width, height: tableView.bounds.size.height))
headerLabel.font = UIFont(name: "Verdana", size: 16)
headerLabel.textColor = UIColor.lightGray
headerLabel.text = self.tableView(self.tableView, titleForHeaderInSection: section)
headerLabel.sizeToFit()
headerView.addSubview(headerLabel)
return headerView
}
答案 0 :(得分:2)
您看到的“边距”是因为两个节标题的高度相同。第二个看起来不那么空,因为它实际上有一个标题。
您可以修改标题的高度以减少空间:
xy1[] <- as.matrix(xy1)[order(col(xy), xy)]
xy1
# x1 y1
#1 0.30 0.17
#2 0.87 0.61
#3 0.34 0.70
#4 0.70 0.40
#5 0.67 0.72
#6 0.22 0.13
答案 1 :(得分:1)
您需要实现heightForHeaderInSection,以便可以折叠该标头。见下文:
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
if section == 0 {
return 1.0
} else {
return 32.0
}
}
您可以根据需要为else条件设置适当的值,但这可以为您提供想法。
更新#1:我在搜索中发现此链接也可能有所帮助:http://stackoverflow.com/a/23955420/3965
建议使用GLFloat的最小值:
if section == 0 {
return CGFloat.leastNormalMagnitude
}
return tableView.sectionHeaderHeight
答案 2 :(得分:0)
实现heightForHeaderInSection并返回第一部分所需的高度。
此外,您通常不会实现titleForHeaderInSection和viewForHeaderInSection。只需将您的switch语句放在viewForHeaderInSection中即可设置标签的文本。
并且您不需要将UILabel放入headerView,只需返回标签即可。或者代替UIView,使用UITableViewHeaderFooterView。