我有一个swift 4/iOS 12应用程序,它为所有视图控制器使用自定义导航栏TintColor,并在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
})
但是,当我关闭activityViewController时,整个应用程序的导航条的tintColor已经发生了变化。这不是我想要的行为。我希望在关闭activityViewController时将tintColor设置回原位,但我不知道如何捕获"willDisappear"函数,以便将其设置回原位。
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)