Ios 边框是用圆角裁剪的吗?敏捷的

Ios 边框是用圆角裁剪的吗?敏捷的,ios,swift,border,rounded-corners,Ios,Swift,Border,Rounded Corners,我已经看到了一些关于这个问题的问题,但它们只是其中一个问题的答案。我正在从一边倒圆角: func roundCorners(_ corners: UIRectCorner, radius: CGFloat) { let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius)) let ma

我已经看到了一些关于这个问题的问题,但它们只是其中一个问题的答案。我正在从一边倒圆角:

func roundCorners(_ corners: UIRectCorner, radius: CGFloat) {
    let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
    let mask = CAShapeLayer()
    mask.path = path.cgPath
    self.layer.masksToBounds = true
    self.layer.mask = mask
}
和执行:

detailsView.roundCorners(.allCorners, radius: 20)
    detailsView.layer.roundCorners(radius: 20, mask: [.layerMinXMinYCorner, .layerMaxXMinYCorner])
然后,我尝试通过以下方式添加边界:

func addBorder(edge: UIRectEdge, color: UIColor, thickness: CGFloat) {

    let border = CALayer()

    switch edge {
        case UIRectEdge.top:
            border.frame = CGRect(x: 0, y: 0, width: frame.width, height: thickness)

        case UIRectEdge.bottom:
            border.frame = CGRect(x:0, y: frame.height - thickness, width: frame.width, height:thickness)

        case UIRectEdge.left:
            border.frame = CGRect(x:0, y:0, width: thickness, height: frame.height)

        case UIRectEdge.right:
            border.frame = CGRect(x: frame.width - thickness, y: 0, width: thickness, height: frame.height)

        default: do {}
    }

    border.backgroundColor = color.cgColor
    addSublayer(border)
}
和执行:

detailsView.layer.addBorder(edge: .top, color: .lightLavender, thickness: 1)
我做错了什么?我得到了这样的结果–边界被裁剪:

self.layer.masksToBounds=true
裁剪边框

要解决这个问题,必须使用两个视图,一个视图在另一个视图中。还可以为两个视图设置相同的框架

在子视图中使用

childView.roundCorners(.allCorners, radius: 20)
parentView.layer.addBorder(edge: .top, color: .lightLavender, thickness: 1)
在父视图中使用

childView.roundCorners(.allCorners, radius: 20)
parentView.layer.addBorder(edge: .top, color: .lightLavender, thickness: 1)

我已通过以下方式将顶部拐角圆角:

func roundCorners(radius: CGFloat, mask: CACornerMask) {
    cornerRadius = radius
    maskedCorners = mask
实施:

detailsView.roundCorners(.allCorners, radius: 20)
    detailsView.layer.roundCorners(radius: 20, mask: [.layerMinXMinYCorner, .layerMaxXMinYCorner])
边界:

extension UIView {
@IBInspectable var borderWidthV: CGFloat {
    get {
        return layer.borderWidth
    }
    set {
        layer.borderWidth = newValue
    }
}

@IBInspectable var borderColorV: UIColor? {
    get {
        return UIColor(cgColor: layer.borderColor!)
    }
    set {
        layer.borderColor = newValue?.cgColor
    }
  }
}
然后,我在视图的底部添加了白色UIView以隐藏底部边框