navigationBar UIPrintInteractionController и UIAppearance

Я использую UIAppearance для установки backgroundImage всех NavigationBar в моем приложении.

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"background.png"] forBarMetrics:UIBarMetricsDefault];

В то же время я использую UIPrintInteractionController для реализации функции печати.

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

введите здесь описание изображения

В этом диалоге это неуместно, я бы хотел не использовать здесь фоновые изображения и иметь системный диалог.

Я пытался использовать [UINavigationBar appearanceWhenContainedIn:[UIPrintInteractionController class], nil] setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault]; , но приложение вылетает с этим сообщением: UIPrintInteractionController does not conform to the UIAppearanceContainer protocol.

Вторая идея заключалась в том, чтобы установить backgroundImage панели навигации в nil для UIPrintInteractionController, например, когда он инициализируется или перед его отображением (в методе делегата). Но у UIPrintInteractionController нет публичных методов для получения панели навигации, и, кроме того, он наследуется от NSObject.

Есть ли способ избавиться от фонового изображения в панели навигации UIPrintInteractionController?


person Anastasia    schedule 03.07.2013    source источник
comment
Попробуйте использовать: ‹!-- язык: target-c --› [внешний вид UINavigationBarWhenContainedIn: [класс UIPopoverController], nil]   -  person Robert Wijas    schedule 04.07.2013
comment
@robert.wijas Спасибо, это работает. Я приму это, если вы опубликуете это как ответ.   -  person Anastasia    schedule 04.07.2013
comment
Я сделал это, но кто-то преобразовал это в комментарий. Публикация снова в качестве ответа.   -  person Robert Wijas    schedule 04.07.2013


Ответы (1)


Вы можете воспользоваться тем фактом, что этот контроллер представлен в UIPopoverController, который поддерживает сдерживание UIAppearance:

[[UINavigationBar appearanceWhenContainedIn:[UIPopoverController class], nil]
person Robert Wijas    schedule 04.07.2013
comment
Пробовал, и это не работает: [[UINavigationBar возникновенияWhenContainedIn: [класс UIPopoverController], nil] setTintColor: [UIColor blueColor]]; - person Pantelis Proios; 14.04.2014