UIDocumentInteractionController不遵守iOS 11中UINavigationBar的barTintColor外观

时间:2017-09-14 20:37:26

标签: ios swift ios11

我有一个示例项目,可在应用启动时设置条形色调颜色:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    UINavigationBar.appearance().barTintColor = UIColor.red
    return true
}

它有一个视图控制器(在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的错误吗?还是有另一种方法可以做到这一点吗?

P.S。 - 我知道我可以在委托中返回self.navigationController,但我需要UIDocumentInteractionController有一个“完成”按钮,而不是“后退”按钮

3 个答案:

答案 0 :(得分:1)

iOS 11公开发布中的相同问题,从我的测试开始,到目前为止看起来只有[setBarStyle]

 [[UINavigationBar appearance] setBarStyle: UIBarStyleBlack];

答案 1 :(得分:1)

它对我有用

- (UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)controller {
return self.navigationController;}

更多细节..我得到了它... DocumentInteractionController Navigation Bar Color

答案 2 :(得分:0)

同样的问题。但我意识到它与barTintColor有关。 setBackgroundImage适合我。

  • 使用背景颜色创建一个小图片并添加以下行:

     UINavigationBar.appearance().setBackgroundImage(UIImage.init(named: "nav_bg")?.resizableImage(withCapInsets: UIEdgeInsetsMake(0, 15, 0, 15), resizingMode: .stretch), for: .default)