Радиус угла панели вкладок не показывает прозрачные углы - PullRequest
2 голосов
/ 15 марта 2020

Я пытаюсь добавить угловой радиус к моей панели вкладок в верхнем левом и верхнем правом углах.

Вот мой код:

import UIKit

class TabBarController: UITabBarController, UITabBarControllerDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()

        self.tabBar.layer.cornerRadius = 32
        self.tabBar.layer.masksToBounds = true
        self.tabBar.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner]
    }

}

А вот мой интерфейс Конструктор для панели вкладок:

enter image description here

Но моя панель вкладок выглядит так:

enter image description here

Как видите, если смотреть на углы, они не прозрачные, они белые. Это должно показать изображение позади этого. Похоже, что с маскировкой что-то не так, но я не уверен, что.

Что я делаю не так?

Вот мой другой класс IBDesignable, который может повлиять на это:

import UIKit

@IBDesignable
class DesignableView: UIView {

}

@IBDesignable
class DesignableButton: UIButton {

}

@IBDesignable
class DesignableLabel: UILabel {

}

@IBDesignable
class DesignableTextField: UITextField {

}

extension UIView {

    @IBInspectable
    var cornerRadius: CGFloat {
        get {
            return layer.cornerRadius
        }
        set {
            layer.cornerRadius = newValue
            layer.masksToBounds = newValue > 0
        }
    }

    @IBInspectable
    var shadowOffset: CGSize {
        get {
            return layer.shadowOffset
        }
        set {
            layer.shadowOffset = newValue
        }
    }

    @IBInspectable
    var shadowColor: UIColor {
        get {
            return UIColor(cgColor: layer.shadowColor!)
        }
        set {
            layer.shadowColor = newValue.cgColor
        }
    }

    @IBInspectable
    var shadowRadius: CGFloat {
        get {
            return layer.shadowRadius
        }
        set {
            layer.shadowRadius = newValue
        }
    }

    @IBInspectable
    var shadowOpacity: Float {
        get {
            return layer.shadowOpacity
        }
        set {
            layer.shadowOpacity = newValue
        }
    }

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

    @IBInspectable
    var borderColor: UIColor {
        get {
            return UIColor(cgColor: layer.borderColor!)
        }
        set {
            layer.borderColor = newValue.cgColor
        }
    }

}

Обновление:

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

enter image description here

Если я отлаживаю представление, вы можете увидеть маленькие красные углы в одном из представлений:

enter image description here

Что это значит?

1 Ответ

2 голосов
/ 15 марта 2020

Я создал проект только с TabBarController. В этом я использовал ваш код и установил радиус угла, ширину границы и цвет границы.

В первом ViewController я сделал следующее:

  1. Проверено, чтобы увидеть, если "Под Bottom Bars "отмечен в ViewController.
  2. Добавил изображение и расширил его до go под нижней панелью.

Казалось, все работает должным образом. Смотрите изображение ниже. Может быть, вы можете дважды проверить свой код, чтобы увидеть, поможет ли какой-либо из вышеперечисленных шагов.

Tab bar

...