我有一个Swift 4 / iOS 12应用程序,该应用程序对所有视图控制器使用了自定义的navbar 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
})
但是,当我关闭activityViewController时,整个应用程序的导航栏的tintColor都已更改。这不是我想要的行为。我希望在关闭activityViewController时重新设置tintColor,但我不知道如何捕获“ willDisappear”函数,因此可以将其重新设置。
答案 0 :(得分:1)
int charAt2 = (int)s.charAt(2) - 48;
是UIActivityViewController
的子类,因此您可以覆盖其方法,例如UIViewController
,viewWillDisappear
等。
因此,首先创建您的viewDidAppear
的自定义子类,然后重写其UIActivityViewController
方法,并声明ViewController消失时应该发生的情况。
viewWillDisappear
然后只需将您的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