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