在IOS的tableview上设置边距

时间:2017-10-29 02:42:06

标签: ios swift tableview

我是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
}

enter image description here

3 个答案:

答案 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。