在activityViewController中更改barTintColor

时间:2018-12-16 18:15:01

标签: swift uiactivityviewcontroller bartintcolor

我有一个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”函数,因此可以将其重新设置。

1 个答案:

答案 0 :(得分:1)

int charAt2 = (int)s.charAt(2) - 48; UIActivityViewController的子类,因此您可以覆盖其方法,例如UIViewControllerviewWillDisappear等。

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