На техническом обсуждении 2011 года я увидел речь о новом протоколе UIAppearance
. Документации пока не так много. Я кратко резюмирую то, что я помню, чтобы объяснить, откуда исходит мой вопрос:
О UIAppearance
:
До сих пор вам приходилось настраивать КАЖДУЮ панель навигации (панель инструментов и т. Д.) Во всех ваших контроллеры представления приложений. С новым свойством внешнего вида вы можете сделать это только в одном месте для всех панелей навигации в вашем приложении. Например: если вы хотите настроить фоновое изображение панели навигации, вы можете сделать это следующим образом:
[[UINavigationBar appearance] setBackgroundImage:
[UIImage imageNamed:@"MyImageName"] forBarMetrics:UIBarMetricsDefault];
Это установит фоновое изображение ВСЕХ панелей навигации в вашем приложении. С помощью barMetrics
вы указываете, хотите ли вы, чтобы изображение использовалось также в альбомном режиме или нет.
Если вы хотите указать внешний вид, который будет применяться только в некоторых контроллерах представления, в документации также есть метод для управления этим, указав, где расположены ваши объекты:
[[UIBarButtonItem appearanceWhenContainedIn:
[ABPeoplePickerNavigationController class], nil] setTintColor:myNavBarColor];
Также стоит упомянуть, если у вас есть один настроенные экземпляры, отличные от ваших настроек внешнего вида, эти экземпляры не будут затронуты прокси-сервером внешнего вида.
Некоторые вопросы:
a) Как узнать, какие свойства класса работают со свойством внешнего вида? Например, поскольку UITableView
соответствует протоколу UIAppearance, я думал, что могу сделать что-то вроде
[[UITableView appearance] setBackgroundColor:mytableViewColor];
, чтобы управлять цветом фона всех моих представлений таблиц, но я не могу!
б) Есть ли список всех классов, которыми можно манипулировать с помощью свойства внешнего вида?
в) В какой момент вызывается настройка внешнего вида? Я надеялся внести изменения, бросившие свойство внешнего вида во время выполнения , но, к сожалению, изменений не происходит.