UIDocumentInteractionController导航栏的颜色变化

问题描述 投票:8回答:6

有没有办法改变的UIDocumentInteractionController navigationbar色调/背景颜色?

objective-c xcode ios4 uidocumentinteraction
6个回答
14
投票

的@DOOManics执行一个清洁的版本:

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

3
投票

如果你把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;
}

2
投票

[[UINavigationBar appearance] setTintColor:[UIColor colorWithRed:107.0/256.0 green:145.0/256.0 blue:35.0/256.0 alpha:1.0]];

放在AppDelegate中的didFinisLaunching方法的代码。这将改变导航栏的颜色为整个应用程序。


1
投票

试试这个代码:

- (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];  
}

0
投票

如果你不使用navigationController,你可以通过你来自哪里启动UIDocumentInteractionController的UIViewController中的视图设置正确的设置,设置在UIDocumentInteractionController导航栏的颜色。

比方说,你拥有的UIViewController viewController1(从这里某处你启动UIDocumentInteractionController),在故事板一个视图1。

随着故事板打开,从上viewController1元素列表中单击视图1和走在右侧“属性检查员”。背景和色调设置有将在您的UIDocumentInteractionController以及以后使用。

然后,你可以使用:

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

需要注意的是viewController1里面,你可能有一个导航栏具有不同的属性,它们不会在UIDocumentInteractionController使用。


0
投票

斯威夫特版本@dvdfrddsgn实施

试试这个:(您需要实现UIDocumentInteractionControllerDelegate)

func documentInteractionControllerViewControllerForPreview(_ controller: UIDocumentInteractionController) -> UIViewController {
    return self.navigationController ?? self
} 
© www.soinside.com 2019 - 2024. All rights reserved.