更改 TabBar 遮罩颜色(不透明)

Change TabBar mask color (non-transparent)

我正在创建一个左上角和右上角圆角的 TabBar。

我正在使用图层蒙版来实现这一点并且它工作正常,但是我需要蒙版颜色为白色(它的透明显示 VC 背景颜色和下面的代码)。

是否可以通过以下方法将蒙版背景颜色设置为白色?

我已经尝试设置图层和 layer.mask 背景颜色但没有成功(我无法更改 VC 背景颜色)。

当前代码:

self.tabBar.layer.masksToBounds = true
self.tabBar.isTranslucent = true
self.tabBar.barStyle = .default
self.tabBar.layer.cornerRadius = 28
self.tabBar.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner]

谢谢。

如果要将背景颜色设置为图层蒙版,则需要另一个图层

this是您需要的效果吗?

你可以试试这个:

extension UITabBar {

func roundCorners(corners: UIRectCorner, backgroundColor: UIColor, cornerColor: UIColor, radius: Int = 20) {

    self.backgroundColor = cornerColor
    let parentLayer = CALayer()
    parentLayer.frame = bounds
    parentLayer.backgroundColor = backgroundColor.cgColor
    layer.insertSublayer(parentLayer, at: 0)

    let maskPath = UIBezierPath(roundedRect: bounds,
                                byRoundingCorners: corners,
                                cornerRadii: CGSize(width: radius, height: radius))

    let mask = CAShapeLayer()
    mask.frame = bounds
    mask.path = maskPath.cgPath
    parentLayer.mask = mask
}
}