Я в основном решил проблему.
Я выбрал способ использовать простое изображение, как говорит ДонМаг. Может быть, это слишком просто, но это все, что я могу.
Используется CAShapeLayer, UIBezierPath.
В исходном подклассе UITabBarController выполните следующий код:
let shapeLayer = CAShapeLayer()
//Get CGPath.Original Layer will be expanded lengthwise.
shapeLayer.path = self.createLengthExpandShape()
//Set image
shapeLayer.fillColor = UIColor.init(patternImage: UIImage.init(named: "MyImage.png")!).cgColor
//Set layer
self.tabBar.layer.insertSublayer(shapeLayer, at: 0)
Самым сложным моментом является UIImage.init (colorPattern :). Вы можете использовать эту функцию, чтобы установить изображение в CAShapeLayer. Файл изображения используется вверх ногами во время выполнения. Таким образом, вы должны перевернуть его заранее с помощью краски или чего-то в этом роде. Также обратите внимание, что изображение помещено в верхний левый угол ОРИГИНАЛЬНОГО (до развернутого) слоя. Если вы изменили способ расширения CAShapeLayer, вам также следует настроить содержимое файла изображения.
Файл изображения: https://i.imgur.com/BYnkuXQ
Для всего проекта см. https://github.com/Satoru-PriChan/ChangeUITabBarAppearance
Если вам это нравится, нажмите Star в проекте GitHub.