2015-01-09 1 views
4

Всякий раз, когда пользователь хочет, чтобы выбрать новый метод акций или действия, которые не перечислены по умолчанию, нажав на «More» кнопку на UIActivityViewController сгенерирована долю листа, отображается новый вид, что-то вроде этого:Как настроить цвет панели навигации, когда пользователь нажимает «Больше» на UIActivityViewController?

Followup view

Как вы можете видеть, панель навигации itens является белой, в то время как ее фон светло-серый. Как я могу изменить эти цвета, чтобы отразить пользовательский интерфейс приложения?

ответ

0

Установите tintColor и barTintColor на панели навигации:

self.navigationController.navigationBar.tintColor = [UIColor whiteColor]; 
    self.navigationController.navigationBar.barTintColor = [UIColor blueColor]; 

tintColor для элементов навигации и стержневых элементов кнопки barTintColor если для фона панели навигации.

+3

Это изменяет панель, когда на общем листе, но когда нажата кнопка «Дополнительно», модаль открывается с другим цветом бара. –

1

набор это свойство на модальный перед открытием, что-то вроде:

modal.navigationController.navigationBar.barTintColor = ... 

Не могли бы вы предоставить код для нас, чтобы увидеть, что вы пытаетесь сейчас?

4

Я сделал это, и это работает для меня:

Sublclass UIActivityViewController и переопределить -(void)presentViewController:animated:completion:

- (void)presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion { 
[viewControllerToPresent.view setTintColor:[[UINavigationBar appearance] tintColor]]; 
for (UIView *view in viewControllerToPresent.view.subviews) { 
    if ([view isKindOfClass:[UINavigationBar class]]) { 
     UINavigationBar *navigationBar = (UINavigationBar*)view; 
     UIImage *navigationBarImage = [[UINavigationBar appearance] backgroundImageForBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault]; 
     [navigationBar setBackgroundImage:navigationBarImage forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault]; 
     [navigationBar setTitleTextAttributes:[[UINavigationBar appearance] titleTextAttributes]]; 
    } 
} 

[super presentViewController:viewControllerToPresent animated:flag completion:^{ 
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; 
    if (completion) { 
     completion(); 
    } 
}]; 
} 
0

Вы, вероятно, с помощью UIAppearance селекторы, чтобы изменить все панели навигации на приложение, вызвав его на классе. Вместо этого вызовите методы внешнего вида для отдельных объектов, которые не будут окрашивать системные навигационные панели таким образом.

Смежные вопросы