TabBar изменить выбранный цвет фона - PullRequest
0 голосов
/ 17 декабря 2018

Я изменяю цвет фона на панель вкладок, когда выбран, но в iPhone X это не работает.

Снимок экрана

Screen Shot

Мой код:

class TabbarVC: UITabBarController {

override func viewDidLoad() {
    super.viewDidLoad()

    let numberOfItems = CGFloat(tabBar.items!.count)
    UITabBar.appearance().selectionIndicatorImage = UIImage().makeImageWithColorAndSize(color: #colorLiteral(red: 0.1294117719, green: 0.2156862766, blue: 0.06666667014, alpha: 1), size: CGSize(width:tabBar.frame.width/numberOfItems,height:(tabBar.frame.height)))
}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(true)
    tabBar.invalidateIntrinsicContentSize()
    tabBar.superview?.setNeedsLayout()
    tabBar.superview?.layoutSubviews()
    }
 }

extension UIImage {
    func makeImageWithColorAndSize(color: UIColor, size: CGSize) -> UIImage {
        UIGraphicsBeginImageContextWithOptions(size, false, 0)
        color.setFill()
        UIRectFill(CGRect(x:0,y:0,width:size.width,height:size.height))
        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return image!
    }
}

Как изменить выбранный цвет bckg с автоматической высотой?

Любая помощь, спасибо!

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018

Попробуйте этот код

let numberOfItems = CGFloat(tabBar.items!.count)
let tabBarItemSize = CGSize(width: tabBar.frame.width / numberOfItems, height: tabBar.frame.height)
tabBar.selectionIndicatorImage = UIImage.imageWithColor(color: UIColor.red, size: tabBarItemSize).resizableImage(withCapInsets: UIEdgeInsets.zero)
tabBar.frame.size.width = self.view.frame.width + 4
tabBar.frame.origin.x = -2
0 голосов
/ 17 декабря 2018

Вы можете изменить выбранный цвет фона TabBar с помощью приведенного ниже кода.

private func changeTabBarBackground(){
    //Change Background Color of Selected Image
    let numberOfItems = CGFloat(5)
    let tabBarItemSize = CGSize(width: (self.tabBar.frame.width) / numberOfItems,
                                height: (self.tabBar.frame.height))

    self.tabBar.selectionIndicatorImage
        = UIImage.imageWithColor(color: UIColor.green,
                                 size: tabBarItemSize).resizableImage(withCapInsets: .zero)

    self.tabBar.frame.size.width = (self.view.frame.width) + 4
    self.tabBar.frame.origin.x = -2
}

PS: Конечно, вы должны изменить numberOfItems на свой желаемый номер.

...