更改UIDocumentInteractionController上的NavigationBar背景

我必须从UIWebView将本地PDF文件(文档目录)传递给其他应用程序(iBooks,Facebook Messenger,WhatsApp,…)。

所以我使用UIDocumentInteractionController:

- (IBAction)shareButton:(id)sender { NSURL *url = [NSURL URLWithString:self.webView.request.URL.absoluteString]; self.docController = [UIDocumentInteractionController interactionControllerWithURL:url]; self.docController.delegate = self; [self.docController presentOpenInMenuFromBarButtonItem:sender animated:YES]; } 

如果我selectFB Messenger或WhatsApp,它会显示一个ViewController。

如何更改此VC(背景图像/颜色,button色调)的NavigationBar外观? 默认白色半透明会很好。

我在AppDelegate中设置了一个NavigationBar背景图片。

试试这个代码:

 - (void)openEC:(NSURL*)url { [UINavigationBar appearance].tintColor = [UIColor blueColor]; docController = [UIDocumentInteractionController interactionControllerWithURL:url]; [docController setDelegate:self]; [docController presentOptionsMenuFromRect:self.view.bounds inView:self.view animated:YES]; 

}

 - (void)documentInteractionControllerDidDismissOptionsMenu:(UIDocumentInteractionController *)controller { [UINavigationBar appearance].tintColor = [UIColor whiteColor]; 

}

如果你使用这一行然后删除这一行,一切正常。

 [[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault]; 

至于状态栏样式,最简单的方法是将self.navigationController作为演示者,而不是self:

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

这可能对你有所帮助