在 activityViewController 中更改 barTintColor
Change barTintColor in activityViewController
我有一个 swift 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
})
但是当我关闭 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)
我有一个 swift 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
})
但是当我关闭 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)