Подтвердить что ты не робот

Когда правила прокси-сервера UIAppearance применяются к новому контроллеру представления?

Я блуждаю, когда именно правила UIAppearance применяются к некоторому новому контроллеру представления?

Я сделал несколько глобальных правил, и я их называю в своем делете приложения. Таким образом, все UIButtons выглядят так же. Но теперь я хочу изменить только внешний вид одного UIButton. Я пробовал помещать код, чтобы удалить его внутри - (void)viewDidLoad, но он не работает - правила UIAppearance еще не применяются. В одном ViewController я ввел код модификации внутри - (void)viewWillLayoutSubviews, и он работал отлично, но теперь в другом ViewController он не работает (код один и тот же).

Где безопасно переопределять правила UIAppearance?

4b9b3361

Ответ 1

В соответствии с видеороликом WWDC 2011 года, представляющим UIAppearance, настройки применяются непосредственно перед тем, как -layoutSubviews вызывается в представлении.

Ответ 2

Если вы хотите настроить одну конкретную кнопку, вы должны:

  • Измените свойства экземпляра кнопки напрямую и не коснитесь настроек внешнего вида для класса или

  • Используйте метод appearanceWhenContainedIn:, как показано ниже:

    [[UIButton appearanceWhenContainedIn:[CustomView class], nil]
     setBackgroundImage:myButtonImage
                forState:UIControlStateNormal];
    

Таким образом, вы все равно можете использовать прокси-сервер внешнего вида для вашей конкретной кнопки (когда вы знаете ее в определенном виде), а не изменять общие настройки внешнего вида.