iOS 13 Отсутствует атрибут слоя панели вкладок Swift - PullRequest
0 голосов
/ 25 мая 2020

Я добавил тень на панель вкладок в начальных версиях на слое, но на iOS 13 мы должны использовать Внешний вид, у которого нет атрибута слоя, как теперь добавить тень.

Тень сверху как на изображении ниже.

enter image description here

if #available(iOS 13, *) {
            let appearance = self.self.tabBarController?.tabBar.standardAppearance.copy()
            appearance?.backgroundImage = UIImage()
            appearance?.shadowImage = UIImage()
            appearance?.shadowColor = .clear
            //appearance?.layer this is missing now
            if let appearance = appearance{
                self.tabBarController?.tabBar.standardAppearance = appearance
            }

        } else {
        self.tabBarController?.tabBar.shadowImage = UIImage()
        self.tabBarController?.tabBar.backgroundImage = UIImage()
        self.tabBarController?.tabBar.layer.shadowOpacity = 0.0
        self.tabBarController?.tabBar.layer.borderWidth = 0.0
        self.tabBarController?.tabBar.clipsToBounds = true
        self.tabBarController?.tabBar.layer.applySketchShadow(color: UIColor(red: 15/255, green: 54/255, blue: 136/255, alpha: 1.0), alpha: 0.1, x: 0, y: 0, blur: 25, spread: 0)
        self.tabBarController?.tabBar.clipsToBounds = false
        }

Ответы [ 3 ]

1 голос
/ 26 мая 2020

Set clipsToBounds False сделает волшебство c за вас.

//**self.tabBarController?.tabBar.clipsToBounds = false**

if #available(iOS 13, *) {
    let appearance = self.self.tabBarController?.tabBar.standardAppearance.copy()
    appearance?.backgroundImage = UIImage()
    appearance?.shadowImage = UIImage()
    appearance?.configureWithTransparentBackground()
    if let appearance = appearance{
        self.tabBarController?.tabBar.standardAppearance = appearance
    }

} else {
self.tabBarController?.tabBar.shadowImage = UIImage()
self.tabBarController?.tabBar.backgroundImage = UIImage()
self.tabBarController?.tabBar.clipsToBounds = false

}
self.tabBarController?.tabBar.clipsToBounds = false
self.tabBarController?.tabBar.layer.shadowOpacity = 0.0
self.tabBarController?.tabBar.layer.borderWidth = 0.0
self.tabBarController?.tabBar.layer.applySketchShadow(color: UIColor(red: 15/255, green: 54/255, blue: 136/255, alpha: 1.0), alpha: 0.1, x: 0, y: 0, blur: 25, spread: 0)
0 голосов
/ 25 мая 2020

Попробуйте использовать приведенный ниже код в своем классе UITabBarController

 override func viewDidLoad() {
        super.viewDidLoad()

      if #available(iOS 13, *) {
            let appearance = self.tabBar.standardAppearance.copy()
            appearance.backgroundImage = UIImage()
            appearance.shadowImage = UIImage()
            self.tabBar.standardAppearance = appearance
        } else {
            self.tabBar.shadowImage = UIImage()
            self.tabBar.backgroundImage = UIImage()
        }

        //Change These values according to your requirement. This will work for all iOS versions
        self.tabBar.layer.shadowColor = UIColor.lightGray.cgColor
        self.tabBar.layer.shadowOpacity = 0.3
        self.tabBar.layer.shadowRadius = 5
}

enter image description here

0 голосов
/ 25 мая 2020

UIBarAppearance имеет свойства shadowImage и shadowColor. Установите их по желанию. Прямо сейчас вы устанавливаете для них no shadow. Также configureWithTransparentBackground означает нет тени. Итак, вы удаляете тень, а затем спрашиваете, где она.

...