圆角只是一个tableview的底角

时间:2016-12-28 07:11:02

标签: swift uitableview calayer

如何让Swift中只有两个底角变圆?

let maskPathTop = UIBezierPath(roundedRect: tableView.bounds, byRoundingCorners: [.BottomLeft, .BottomRight], cornerRadii: CGSize(width: 5, height: 5.0))
let shapeLayerTop = CAShapeLayer()
shapeLayerTop.frame = tableView.bounds
shapeLayerTop.path = maskPathTop.CGPath
tableView.layer.mask = shapeLayerTop

我试过这段代码,但它没有用。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

当我遇到像你这样的任务时,我尝试了许多带代码的解决方案,但最快最简单的方法是将UIView全部四舍五入并将其附加到底部的表视图中。并使背景颜色相同。所以圆角只会在UIView。它将位于前层。

例如,您可以创建5个高度的UIView,并将其附加在UITableView的底部。

如果您有特定的UI设计,这个答案将无济于事。

答案 1 :(得分:0)

您只需使用以下方法构造bezierPath:

  1. https://developer.apple.com/reference/uikit/uibezierpath/1624343-move
  2. https://developer.apple.com/reference/uikit/uibezierpath/1624354-addline
  3. https://developer.apple.com/reference/uikit/uibezierpath/1624367-addarc
  4. 将度数角度转换为弧度:

    #define degreesToRadians(x) ((x) * M_PI / 180.0)
    

    您将需要4分:

    1. 左上角
    2. 右上角
    3. 右下方中心(宽度 - cornerRadius,高度 - cornerRadius)
    4. 左下角(cornerRadius,height - cornerRadius)
    5. 将fillColor和strokeColor设置为您的CAShapeLayer对象。并且不要忘记在layoutSubviews方法

      上更新图层框架

      我希望它会有所帮助