我有一个快速的4/ iOS 12应用程序,它为所有视图控制器使用自定义的barTintColor,并在appDelegate.swift中设置如下所示:
UINavigationBar.appearance().barTintColor = UIColor(red: 229/255, green: 80/255, blue: 57/255, alpha: 1.0)但是,当我呈现一个activityViewController时,id'l喜欢更改颜色,这样邮件撰写视图就可以得到一个白色的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对于整个应用程序来说已经发生了变化。这不是我想要的行为。我希望在取消tintColor时设置activityViewController,但我不知道如何捕获"willDisappear“函数,以便将其设置回原来的位置。
发布于 2018-12-16 18:21:58
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)https://stackoverflow.com/questions/53805136
复制相似问题