UITableview将填充添加到自定义部分标题imageview

时间:2017-06-06 15:38:33

标签: ios swift uitableview

我正在尝试向此自定义标题视图(图像)添加填充。

表格为static content cells,我只在第一部分添加图片。

我尝试关注this链接,但未成功。

我正在尝试在标题视图中添加一些顶部和底部填充。

我试过这个没有运气:

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    if section == 0 {
        var header = tableView.tableHeaderView
        let image = UIImage(named: "Placeholder") // is 121x121
        let imageView = UIImageView(frame: CGRect(x: 0, y: 20, width: tableView.frame.width, height: tableView.sectionHeaderHeight))
        imageView.image = image
        imageView.contentMode = .scaleAspectFit
        header = imageView
        return header
    }
    return nil
}

我还在委托中定义标题高度:

override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    if section == 0 {
        return 125.0
    }
    return 44.0
}

结果相同,没有填充。

任何帮助将不胜感激

enter image description here

我还尝试将imageView添加到标题子视图中,这会导致整个图像消失。

1 个答案:

答案 0 :(得分:3)

不是将UIImageView作为标题返回,而是将其作为子视图添加到UIView中,并在那里创建填充。

你的问题是,即使你设置了标题的框架,UITableView也会调整它的大小以适应它的宽度,以及你设置为125的高度。因此,你必须将它包含在一个将填充的UIView中表的标题,并包含您希望为其填充的UIImageView。

编辑: 试试这个

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    if section == 0 {
        let header = UIView()
        header.backgroundColor = UIColor.clear
        let image = UIImage(named: "Placeholder") // is 121x121
        let imageView = UIImageView(frame: CGRect(x: 0, y: 20, width: tableView.frame.width, height: tableView.sectionHeaderHeight))
        imageView.image = image
        imageView.contentMode = .scaleAspectFit
        header.addSubview(imageView)
        return header
    }
    return nil
}