Изменить цвет панели навигации UIDocumentInteractionController - PullRequest
8 голосов
/ 28 июля 2011

Есть ли способ изменить оттенок / цвет фона UIDocumentInteractionController navigationbar?

Ответы [ 6 ]

14 голосов
/ 24 октября 2013

Более чистая версия реализации @DOOManics:

- (UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)controller
{
    return [self navigationController];
}
3 голосов
/ 10 сентября 2011

Если вы поместите UIDocumentInteractionController на UINavigationController, он автоматически примет цвет своей навигационной панели. Вероятно, это ваш root view 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 голосов
/ 13 сентября 2013

[[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 голос
/ 09 июня 2016

Попробуйте этот код:

- (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 голосов
/ 04 февраля 2019

Версия Swift для реализации @dvdfrddsgn

Попробуйте это: (Вам необходимо реализовать UIDocumentInteractionControllerDelegate)

func documentInteractionControllerViewControllerForPreview(_ controller: UIDocumentInteractionController) -> UIViewController {
    return self.navigationController ?? self
} 
0 голосов
/ 09 марта 2014

Если вы не используете navigationController, вы можете установить цвет панели навигации в UIDocumentInteractionController, установив правильные параметры в представлении UIViewController, откуда вы запускаете UIDocumentInteractionController.

Допустим, у вас есть UIViewController viewController1 (откуда-то здесь вы запускаете UIDocumentInteractionController) с View1 в раскадровке.

Открыв раскадровку, щелкните View1 из списка элементов viewController1 и перейдите к «Атрибутам атрибутов» с правой стороны.Заданные фон и оттенок будут использоваться в вашем UIDocumentInteractionController, а также впоследствии.

Тогда вы можете просто использовать:

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

Обратите внимание, что внутри viewController1 у вас может быть панель навигации с другими свойствами, и они не будут использоваться в UIDocumentInteractionController.

...