iOS 5: Интересно о UIAppearance

На техническом обсуждении 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];

, чтобы управлять цветом фона всех моих представлений таблиц, но я не могу!

б) Есть ли список всех классов, которыми можно манипулировать с помощью свойства внешнего вида?

в) В какой момент вызывается настройка внешнего вида? Я надеялся внести изменения, бросившие свойство внешнего вида во время выполнения , но, к сожалению, изменений не происходит.

50
задан Moshe 18 August 2012 в 18:57
поделиться