Я пытаюсь добавить UIImage
для настройки моего tabBar
так же, как я делал с моим navigationBar
, но, похоже, это не работает.
Сначала я создаю CAGradientLayer
, а затем превращаю его в UIImage
. Вот код:
extension CALayer {
func createImageFromLayer() -> UIImage?{
frame = CGRect(x: 0, y: 0, width: 1000, height: 1000)
UIGraphicsBeginImageContext(frame.size)
guard let context = UIGraphicsGetCurrentContext() else {return nil}
render(in: context)
let output = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return output
}
}
class CustomTabBarController: UITabBarController {
let grad: CAGradientLayer = {
let gradient = CAGradientLayer()
gradient.colors = [UIColor.clear, UIColor.black]
gradient.locations = [0,1]
return gradient
}()
override func viewDidLoad() {
super.viewDidLoad()
let tabImage = grad.createImageFromLayer()
self.tabBar.isTranslucent = true
self.tabBar.backgroundImage = tabImage
self.tabBar.shadowImage = UIImage()
}
}
Настройка изображения для моего navigationBar
отлично работала, используя этот метод:
navigationController?.navigationBar.setBackgroundImage(barImg, for: UIBarMetrics.default)
В этом коде barImg
- это UIImage
, созданный из CAGradientLayer
, как и с tabBar
. Я проверил, если tabImage
это nil
, а это не так.
Кажется, что tabBar
не имеет функции, подобной tabBar.setBackgroundImage
, как navigationBar
. Как мне это сделать?
Единственный результат, который я получаю, - это совершенно четкий фон для моего tabBar
без добавления градиента, и я не знаю, чего мне здесь не хватает, однажды tabBar.backgroundImage
не работает.
Спасибо за ответы.