UIAppearance Удалить пользовательский фон NavBar для UIPopoverController

Я нахожусь в процессе включения функции UIAppearance в iOS 5, чтобы придать универсальному приложению уникальную тему. В настоящее время я реализовал некоторый код в моем делегате приложения, чтобы настроить пользовательские панели навигации:

UIImage *navBarImage = [[UIImage imageNamed:@"navigationBar.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(7, 7, 7, 7)];
[[UINavigationBar appearance] setBackgroundImage:navBarImage forBarMetrics:UIBarMetricsDefault];

Это хорошо работает и меняет все навигационные панели с простого стиля Apple на яркий градиент. Однако проблема, с которой я сталкиваюсь, заключается в том, что она переопределяет какой-то стиль, который мне тоже не нужен. Моя конкретная проблема заключается в том, что он переопределяет фон панели навигации в iPad UIPopoverController, создавая уродливый пользовательский опыт. Подскажите пожалуйста как это исправить.

Изменить: Обратите внимание, что это универсальное приложение, и я открываю средство выбора изображений через UIPopoverController на iPad и модальное представление на iPhone / iPod. Я хочу удалить только пользовательский фон для navBar на всплывающем окне iPad, а не на модальном виде.

Как это выглядит в настоящее время:

Как я хочу, чтобы это выглядело так:

Заранее спасибо за помощь, Guvvy

1 ответ

Решение

Попробуйте использовать +appearanceWhenContainedIn: метод для удаления настроек фонового изображения с панелей навигации, когда они содержатся в контроллерах popover. Что-то вроде этого:

[[UINavigationBar appearanceWhenContainedIn:[UIPopoverController class], nil] setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];

Из документации не ясно, следует ли устанавливать фоновое изображение панели навигации в nil восстанавливает внешний вид по умолчанию - если это не сработает, возможно, вам придется воспользоваться противоположным подходом и предоставить список контроллеров представления не-поповерного контейнера, которые вы используете для +appearanceWhenContainedIn:,

Другие вопросы по тегам