【问题标题】:Rounded only bottom corner of a tableview仅圆角 tableview 的底角
【发布时间】:2016-12-28 18:29:23
【问题描述】:

如何让 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

我已经尝试过这段代码,但它不起作用。任何帮助将不胜感激。

【问题讨论】:

标签: swift uitableview calayer


【解决方案1】:

当我遇到像你这样的任务时,我尝试了很多代码解决方案,但最快和最简单的方法是使 UIView 的所有角都变圆并将其附加到底部的表格视图中。并使背景颜色相同。所以圆角只会出现在 UIView 上。它将在前层。

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

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

【讨论】:

    【解决方案2】:

    您只需要使用以下方法构造一个 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

    将度角转换为弧度:

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

    你需要 4 分:

    1. 左上角
    2. 右上角
    3. 右下中心(宽 - 角半径,高 - 角半径)
    4. 左下中心(cornerRadius,高度 -cornerRadius)

    将 fillColor 和 strokeColor 设置为您的 CAShapeLayer 对象。并且不要忘记在 layoutSubviews 方法上更新图层框架

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-16
      • 2016-02-20
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多