【问题标题】:Change TabBar mask color (non-transparent)更改 TabBar 遮罩颜色(不透明)
【发布时间】:2020-04-27 14:12:29
【问题描述】:

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

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

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

我尝试设置 layer 和 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]

谢谢。

【问题讨论】:

  • 您是否在这里尝试了所有答案:stackoverflow.com/questions/38127839/…
  • 我上面的代码实际上取自您建议的线程上最受欢迎的答案。我的问题是我可以使用这个解决方案来达到预期的效果吗?

标签: ios swift xcode tabbar


【解决方案1】:

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

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
}
}

【讨论】:

  • 嗨,如果您在示例中专门将蒙版设置为白色?那么是的,这正是我所追求的。现在不在电脑上,但稍后会测试。谢谢。
  • 我在示例中使用了一种解决方法。我没有将蒙版设置为白色,而是将标签栏设置为白色并插入另一个带有蒙版的彩色图层。这可能会产生您需要的效果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 2014-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-19
相关资源
最近更新 更多