我有一个示例项目,可在应用启动时设置条形色调颜色:
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有一个“完成”按钮,而不是“后退”按钮
答案 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)