仅在将角半径应用于顶部和底部单元格时面临设计问题

时间:2018-05-11 13:24:13

标签: ios swift uitableview uitableviewsectionheader

enter image description here

我已经使用了UITableview部分标题和其他单元来显示内容,但是当涉及到角半径时,我们怎样才能实现这样的布局而不会有任何痛苦。

我试图给topview,topRight和最后一个cell to bottomLeft,bottomRight的tableview标题提供转角半径,但它对我不起作用。

 func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {

        guard let headerView = tableView.dequeueReusableCell(withIdentifier: "headerCell") as? headerCell else { return UIView() }

        headerView.labelTaskName.text = arrayTaskLists[section].first?.outcome_title
        headerView.viewContainerHeader.roundCorners([.topRight,.topLeft], radius: 10.0)
        headerView.viewContainerHeader.layoutSubviews()
        headerView.btnHeaderViewCell.tag = section
        headerView.delegate = self

        return headerView
    }

    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return 44
    }

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let cell = tableView.dequeueReusableCell(withIdentifier: CellIdentifier.TaskInformationCell) as! TaskInformationCell

        cell.infoView.roundCorners([.bottomLeft,.bottomRight], radius: 10.0)
        cell.infoView.layoutSubviews()
    }

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

对单元格使用Disclouser tableviewcell,为Top Header

使用section header

答案 1 :(得分:-2)

您可以更改TableViewCell的de backgroundView,创建UIView的子类并更改图层类:

class BackgroundView: UIView 
{
    class var layerClass: AnyClass
    {
        return CAShapeLayer.self
    }
}

稍后在cellForRowAtIndexPath你会做这样的事情:

private var CellIdentifier = "CustomCell"

let cell = tableView.dequeueReusableCell(withIdentifier: CellIdentifier, for: indexPath) as? CustomCell
let frame: CGRect? = cell?.backgroundView.frame
cell?.backgroundView = BackgroundView(frame: frame ?? CGRect.zero)

var corner: CGFloat = 20.0
var path = UIBezierPath(roundedRect: cell?.backgroundView.bounds ?? CGRect.zero, byRoundingCorners: .allCorners, cornerRadii: CGSize(width: corner, height: corner))
var shapeLayer = cell?.backgroundView.layer as? CAShapeLayer

shapeLayer?.path = path.cgPath
shapeLayer?.fillColor = cell?.textLabel.backgroundColor?.cgColor
shapeLayer?.strokeColor = UIColor.lightGray.cgColor
shapeLayer?.lineWidth = 1.0

return cell