0

Я сделал sublass из UINavigationController ... Внутри этого класса я настроить внешний вид на следующее:Установить вид UIImagePickerController обратно по умолчанию

UIImage *navBackgroundImage = [UIImage imageNamed:@"nav_bg"]; 
    [[UINavigationBar appearance] setBackgroundImage:navBackgroundImage forBarMetrics:UIBarMetricsDefault]; 

    [[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys: 
                  [UIColor whiteColor], UITextAttributeTextColor, 
                  [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8],UITextAttributeTextShadowColor, 
                  [NSValue valueWithUIOffset:UIOffsetMake(0, 0)], 
                  UITextAttributeTextShadowOffset, 
                  [UIFont fontWithName:@"Yellowtail" size:30.0], UITextAttributeFont, 
                  [UIColor whiteColor], UITextAttributeTextColor, nil]]; 
    [[UINavigationBar appearance] setBarTintColor:[UIColor colorWithRed:0.0f green:170/255.0f blue:130/255.0f alpha:1.0f]]; 

    [[UITabBar appearance] setSelectedImageTintColor:[UIColor colorWithRed:0.0f green:170/255.0f blue:130/255.0f alpha:1.0f]]; 
    [[UITabBar appearance] setBackgroundColor:[UIColor whiteColor]]; 

Теперь в моем приложении, когда я хочу, чтобы сфотографировать его представляет мою UIImagePicker, но панель навигации имеет тот же внешний вид, что и моя навигационная панель навигационных контроллеров, и кнопка CANCEL не работает ...

Итак, мой вопрос: как я могу использовать стиль iOS по умолчанию для выбора изображений и мой стиль для остальных?

ответ

1

После нескольких часов исследований я решил проблему ... решение довольно простое:

UIImagePickerController * picker = [[UIImagePickerController alloc] init]; 
picker.delegate = self; 

/* reset the style to the default one */ 
[picker.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault]; 
[picker.navigationBar setTitleTextAttributes:nil]; 
[picker.navigationBar setBarTintColor:nil]; 

[self presentViewController:picker animated:YES completion:nil]; 

Вот кто-то с той же проблемой: Custom nav bar with UIImagePickerControl

0

Поскольку ваш ответ появился первый в Google, когда я я искал эту проблему, я предпочитаю отправлять правильный ответ, чем принятый.

This SO post правильно относится к проблеме. UIAppearance имеет метод, используемый для тонкой настройки пользовательского интерфейса: appearanceWhenContainedIn:

как, например:

[[UIBarButtonItem appearanceWhenContainedIn:[UIImagePickerController class], nil] setBackButtonBackgroundImage:[UIImage imageNamed:@"blank-button"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];