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