首页 > 解决方案 > 删除/处理 UINavigationBar UIAppearence 以修复在 Swift iOS 中点击更多后 UIActivityViewController 共享屏幕标题透明的问题

问题描述

我在整个应用程序中使用UIAppearence()类应用了UINavigationBar.appearence()。由于在显示UIActivityViewController()共享文档时面临这个问题,我只想在显示共享文档屏幕时删除导航栏外观,然后当我们回来时导航栏应该像往常一样返回。

UINavigationBar.appearence()

我正在尝试在 iPhone 和 iPad 中使用UIActivityViewController共享 pdf 文件,能够与下面的代码共享,但在点击 (...)more 后会遇到问题,它会打开以选择屏幕标题的任何应用程序(我们有完成应用程序和编辑按钮)是透明的,标题背景应该默认为白色。用红色矩形标记的问题。标题背景覆盖导航栏外观透明属性。

让我知道如何处理/删除导航栏上的外观。

@objc func shareMenuTapped(button: UIBarButtonItem) {
     let url = NSURL.fileURL(withPath: "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf") 
     let activityViewController = UIActivityViewController(activityItems: [url], applicationActivities: nil)
     activityViewController.popoverPresentationController?.sourceView = self.shareButton // so that iPads won't crash, sharebutton is a rightbarbutton to navigation.
     self.present(activityViewController, animated: true, completion: nil) 
}

在此处输入图像描述

在此处输入图像描述

标签: iosswiftxcodeuiactivityviewcontrolleruiappearance

解决方案


在呈现时尝试使用以下代码activityViewController

self.present(activityViewController, animated: true) { 
    UIBarButtonItem.appearance().tintColor = UIColor.systemBlue
    UINavigationBar.appearance().barTintColor = UIColor.white
}

推荐阅读