Изменение цвета всех элементов интерфейса одного типа - PullRequest
2 голосов
/ 13 марта 2009

Мне интересно, возможно ли изменить цвет кнопок по умолчанию в моем приложении с помощью пары строк кода? Может быть очень скучно менять цвет каждой кнопки вручную. Особенно, если их у вас много.

Например, я хочу, чтобы все мои кнопки были оранжевыми, а не оригинальными белыми.

Спасибо заранее, Илья.

Ответы [ 2 ]

3 голосов
/ 13 марта 2009

Боюсь, что глобальных настроек нет.

Можно выполнить итерацию по всем видам и подпредставлениям объекта, запросить их тип, а затем при необходимости применить пользовательские цвета. Это позволяет вам иметь одно место в вашем приложении, к которому вы передаете свои представления, и все применяется.

Что-то вроде;

//! Applies application specific styles to UIKit objects
void applyStyles(UIView* view)
{
  for(UIView* subview in view.subviews)
  {
    // test type of view
    if([[subview class] isEqualToString:@"UIButton"] == YES)
    {
      // apply colors for buttons
    }
    else if([[subview class] isEqualToString:@"SomethingElse"] == YES)
    {
      // apply colors for something else
    }
  }
}
1 голос
/ 18 мая 2009

Я бы рекомендовал создать подкласс UIButton (MyCustomButton) и применить любые стилистические элементы, которые вы хотите в конструкторе вашего подкласса.

Передача UIB-кнопок в некий «StyleManager», как предложено выше, - лучший подход, чем сказать

button.backgroundColor = [UIColor orangeColor];

но вам все равно придется пройтись по коду и сказать что-то вроде

[StyleManager applyStyles:viewThatContainsButton];

Это расширяет возможности применения стилей, вероятно, к каждому контроллеру и некоторым элементам View в вашей кодовой базе. Создание подкласса позволяет применять стиль с одной строкой кода, а не одной строкой на представление.

Объединение решения вашей проблемы в один класс устраняет это разрастание решения и должно также снизить затраты на обслуживание .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...