UIDocumentInteractionController 在 iOS 11 中不尊重 UINavigationBar 的 barTintColor 外观
Posted
技术标签:
【中文标题】UIDocumentInteractionController 在 iOS 11 中不尊重 UINavigationBar 的 barTintColor 外观【英文标题】:UIDocumentInteractionController doesn't respect UINavigationBar's barTintColor appearance in iOS 11 【发布时间】:2017-09-14 20:37:26 【问题描述】:我有一个示例项目,可以在应用启动时设置条形颜色:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
UINavigationBar.appearance().barTintColor = UIColor.red
return true
它有 1 个视图控制器(在 UINavigationController 内部),其中包含以下代码:
@IBAction func launchDocument(_ sender: Any)
if let url = Bundle.main.url(forResource: "example", withExtension: "pdf")
let controller = UIDocumentInteractionController(url: url)
controller.delegate = self
controller.presentPreview(animated: false)
func documentInteractionControllerViewControllerForPreview(_ controller: UIDocumentInteractionController) -> UIViewController
return self
在 ios 10 中,主视图控制器和 UIDocumentInteractionController 都有红色导航栏。在 iOS 11 中,UIDocumentInteractionController 不是红色的。这是 iOS 11 的错误吗?还是有其他方法可以做到这一点?
附: - 我知道我可以在委托中返回 self.navigationController,但我需要 UIDocumentInteractionController 有一个“完成”按钮,而不是一个“返回”按钮
【问题讨论】:
有什么解决办法吗? 【参考方案1】:根据我的测试,iOS 11 公开版本中的相同问题,目前看来仅遵循 [setBarStyle]
[[UINavigationBar appearance] setBarStyle: UIBarStyleBlack];
【讨论】:
【参考方案2】:对我有用
- (UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)controller
return self.navigationController;
更多细节..我得到了它...... DocumentInteractionController Navigation Bar Color
【讨论】:
【参考方案3】:同样的问题。但我意识到这是关于barTintColor
。 setBackgroundImage
为我工作。
使用您的背景颜色创建一个小图像并添加以下行:
UINavigationBar.appearance().setBackgroundImage(UIImage.init(named: "nav_bg")?.resizableImage(withCapInsets: UIEdgeInsetsMake(0, 15, 0, 15), resizingMode: .stretch), for: .default)
【讨论】:
以上是关于UIDocumentInteractionController 在 iOS 11 中不尊重 UINavigationBar 的 barTintColor 外观的主要内容,如果未能解决你的问题,请参考以下文章