使用 UIBezierPath 的带有圆角的 TableView 页眉和页脚

Posted

技术标签:

【中文标题】使用 UIBezierPath 的带有圆角的 TableView 页眉和页脚【英文标题】:TableView header and footer with round corners using UIBezierPath 【发布时间】:2016-06-15 17:47:40 【问题描述】:

我想在 tableview 页眉的左上角和右上角以及 tableview 页脚的两个底角添加圆角。我发现 UIBezierPath 作为解决方案,但我的问题是只有一个角是圆的,而另一个不是。这是我的代码:

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? 
    let  headerCell = tableView.dequeueReusableCellWithIdentifier("headerCell") as! myCustomHeaderCell


    let layer = CAShapeLayer()
    let corners = UIRectCorner.TopLeft.union(UIRectCorner.TopRight)
    layer.path = UIBezierPath(roundedRect: CGRect(x: 0, y: 0, width: headerCell.frame.width, height: headerCell.frame.height), byRoundingCorners: corners, cornerRadii:CGSizeMake(20.0, 20.0)).CGPath
    headerCell.layer.mask = layer
    return headerCell

错在哪里?我需要进行哪些更改才能使其正常工作?

非常感谢您的帮助!

【问题讨论】:

这对我来说应该是有效的,所以我无法重现你的错误,也许你的问题是约束而不是 【参考方案1】:

我在设置贝塞尔路径和约束时也发现了这个问题,但是您可以设置 headerCell.layer.cornerRadius = 20 替换贝塞尔,然后创建一个新视图,将其背景颜色设置为与您的 headerCell 的背景颜色相同(在 InterfaceBuilder 或编程)将其设置在 headerCell 上方以掩盖 headerCell bottomLeft 和 bottomRight 圆角。

【讨论】:

我支持这种方法!

以上是关于使用 UIBezierPath 的带有圆角的 TableView 页眉和页脚的主要内容,如果未能解决你的问题,请参考以下文章

使用 UIBezierPath 的圆角多边形

如何将圆角添加到 UIBezierPath 自定义矩形?

模糊的圆角矩形 UIBezierPath,UIButton 背景

UIButton中的UIBezierPath圆角

阴影不适用于带有蒙版的 UIViewLayer

UITableViewCell自动布局宽度不适用于UIBezierPath