使用 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 页眉和页脚的主要内容,如果未能解决你的问题,请参考以下文章