Изменение barTintColor в ActivityViewController - PullRequest
0 голосов
/ 16 декабря 2018

У меня есть быстрое приложение 4 / iOS 12, которое использует настраиваемую панель навигации barTintColor для всех контроллеров представления и настроено в appDelegate.swift следующим образом:

UINavigationBar.appearance().barTintColor = UIColor(red: 229/255, green: 80/255, blue: 57/255, alpha: 1.0)

Однако я бы хотел изменитьцвет, когда я представляю ActivityViewController, чтобы представление составления почты получило белый barTint.Я добился этого, выполнив:

let activityViewController = UIActivityViewController(activityItems: textShare , applicationActivities: nil)
            activityViewController.popoverPresentationController?.sourceView = self.view
            self.present(activityViewController, animated: true, completion: { () in

                UINavigationBar.appearance().barTintColor = UIColor.white
            })

Но когда я отклонил активностьViewController, tintColor панели навигации изменился для всего приложения.Это не то поведение, которое я хочу.Я хочу, чтобы tintColor был сброшен, когда я закрывал активностьViewViewController, но я не могу понять, как перехватить функцию willDisappear, чтобы можно было вернуть ее обратно.

1 Ответ

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

UIActivityViewController является подклассом UIViewController, поэтому вы можете переопределить его метод, например viewWillDisappear, viewDidAppear и т. Д.

Итак, сначала создайте свой собственный подкласс UIActivityViewController, а затем переопределите его viewWillDisappear метод и объявить, что должно произойти, когда ViewController исчезнет.

class YourActivityViewController: UIActivityViewController {
    override func viewWillDisappear(_ animated: Bool) {
        UINavigationBar.appearance().barTintColor = UIColor(red: 229/255, green: 80/255, blue: 57/255, alpha: 1.0)
    }
}

, а затем просто объявить ваш activityViewController как UIActivityViewController подкласс

let activityViewController = YourActivityViewController(activityItems: textShare , applicationActivities: nil)
...