Ответ 1
В соответствии с видеороликом WWDC 2011 года, представляющим UIAppearance, настройки применяются непосредственно перед тем, как -layoutSubviews
вызывается в представлении.
Я блуждаю, когда именно правила UIAppearance применяются к некоторому новому контроллеру представления?
Я сделал несколько глобальных правил, и я их называю в своем делете приложения. Таким образом, все UIButtons выглядят так же. Но теперь я хочу изменить только внешний вид одного UIButton. Я пробовал помещать код, чтобы удалить его внутри - (void)viewDidLoad
, но он не работает - правила UIAppearance еще не применяются. В одном ViewController я ввел код модификации внутри - (void)viewWillLayoutSubviews
, и он работал отлично, но теперь в другом ViewController он не работает (код один и тот же).
Где безопасно переопределять правила UIAppearance?
В соответствии с видеороликом WWDC 2011 года, представляющим UIAppearance, настройки применяются непосредственно перед тем, как -layoutSubviews
вызывается в представлении.
Если вы хотите настроить одну конкретную кнопку, вы должны:
Измените свойства экземпляра кнопки напрямую и не коснитесь настроек внешнего вида для класса или
Используйте метод appearanceWhenContainedIn:
, как показано ниже:
[[UIButton appearanceWhenContainedIn:[CustomView class], nil]
setBackgroundImage:myButtonImage
forState:UIControlStateNormal];
Таким образом, вы все равно можете использовать прокси-сервер внешнего вида для вашей конкретной кнопки (когда вы знаете ее в определенном виде), а не изменять общие настройки внешнего вида.