Как я могу изменить цвет заголовка панели вкладок в iOS 13? - PullRequest
1 голос
/ 29 апреля 2020

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

Я установил базовый c цвет панели вкладок в viewDidLoad.

override func viewDidLoad() {
    super.viewDidLoad()

    let appearance = self.tabBarController!.tabBar.standardAppearance.copy()
    appearance.stackedLayoutAppearance.normal.iconColor = .red
    appearance.stackedLayoutAppearance.normal.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.red]
    appearance.stackedLayoutAppearance.selected.iconColor = .blue
    appearance.stackedLayoutAppearance.selected.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.blue]
    self.tabBarController!.tabBar.standardAppearance = appearance

}

При нажатии на кнопку я хочу изменить внешний вид панели вкладок, но она не работает.

@IBAction func changeTabbarApperence(){

    let appearance = self.tabBarController!.tabBar.standardAppearance.copy()
    appearance.stackedLayoutAppearance.normal.iconColor = .green
    appearance.stackedLayoutAppearance.normal.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.green]
    appearance.stackedLayoutAppearance.selected.iconColor = .orange
    appearance.stackedLayoutAppearance.selected.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.orange]
    self.tabBarController!.tabBar.standardAppearance = appearance

}

Может кто-нибудь помочь мне реализовать эту функцию? Как изменить время выполнения панели вкладок?

1 Ответ

0 голосов
/ 29 апреля 2020

Определите переменную форекс:

var whichAppearance = 0

Измените viewWillAppear как:

if self.whichAppearance == 0{ //Use your code at "viewDidLoad"
    let appearance = self.tabBarController!.tabBar.standardAppearance.copy()
        appearance.stackedLayoutAppearance.normal.iconColor = .red
        appearance.stackedLayoutAppearance.normal.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.red]
        appearance.stackedLayoutAppearance.selected.iconColor = .blue
        appearance.stackedLayoutAppearance.selected.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.blue]
        self.tabBarController!.tabBar.standardAppearance = appearance

} else { //Use your code at "click func"

let appearance = self.tabBarController!.tabBar.standardAppearance.copy()
appearance.stackedLayoutAppearance.normal.iconColor = .green
appearance.stackedLayoutAppearance.normal.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.green]
appearance.stackedLayoutAppearance.selected.iconColor = .orange
appearance.stackedLayoutAppearance.selected.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.orange]
self.tabBarController!.tabBar.standardAppearance = appearance

}

@IBAction func changeTabbarApperence(){

    self.whichAppearance = 1

    self.viewWillAppear(true)
}

Надеюсь, это поможет ...

...