更改activityViewController中的barTintColor



我有一个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"函数,以便将其设置回原位。

UIActivityViewControllerUIViewController的子类,因此您可以覆盖其方法,如viewWillDisappearviewDidAppear等。

因此,首先创建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)

相关内容

  • 没有找到相关文章

最新更新