Изменить цвет маски TabBar (непрозрачный) - PullRequest
0 голосов
/ 10 января 2020

Я создаю TabBar с закругленными верхним левым и верхним правым углами.

Я использую маску слоя, чтобы добиться этого, и она отлично работает, однако мне нужно, чтобы цвет маски был белым (его прозрачный показывая цвет фона V C с приведенным ниже кодом).

Можно ли установить белый цвет фона маски при подходе ниже?

Я пробовал устанавливать layer и layer.mask цвета фона, но безуспешно (я не могу изменить цвет фона V C).

текущий код:

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

Спасибо.

1 Ответ

0 голосов
/ 13 января 2020

Если вы хотите установить цвет фона для маски слоя, вам нужен еще один слой

Является ли этим нужным вам эффектом?

Вы можете попробовать это:

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