有没有办法改变的UIDocumentInteractionController
navigationbar
色调/背景颜色?
的@DOOManics执行一个清洁的版本:
- (UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)controller
{
return [self navigationController];
}
如果你把UIDocumentInteractionController到一个UINavigationController它会自动拍摄颜色的导航栏。这可能是你的根视图navcontroller。
你这样做与documentInteractionControllerViewControllerForPreview
方法:
- (UIViewController *) documentInteractionControllerViewControllerForPreview: (UIDocumentInteractionController *) controller
{
// Use the rootViewController here so that the preview is pushed onto the navbar stack
MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
return appDelegate.window.rootViewController;
}
[[UINavigationBar appearance] setTintColor:[UIColor colorWithRed:107.0/256.0 green:145.0/256.0 blue:35.0/256.0 alpha:1.0]];
放在AppDelegate中的didFinisLaunching
方法的代码。这将改变导航栏的颜色为整个应用程序。
试试这个代码:
- (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];
}
如果你不使用navigationController,你可以通过你来自哪里启动UIDocumentInteractionController的UIViewController中的视图设置正确的设置,设置在UIDocumentInteractionController导航栏的颜色。
比方说,你拥有的UIViewController viewController1(从这里某处你启动UIDocumentInteractionController),在故事板一个视图1。
随着故事板打开,从上viewController1元素列表中单击视图1和走在右侧“属性检查员”。背景和色调设置有将在您的UIDocumentInteractionController以及以后使用。
然后,你可以使用:
- (UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)controller
{
return self;
}
需要注意的是viewController1里面,你可能有一个导航栏具有不同的属性,它们不会在UIDocumentInteractionController使用。
斯威夫特版本@dvdfrddsgn实施
试试这个:(您需要实现UIDocumentInteractionControllerDelegate)
func documentInteractionControllerViewControllerForPreview(_ controller: UIDocumentInteractionController) -> UIViewController {
return self.navigationController ?? self
}