У меня есть приложение Swift, которое перемещается по многим контроллерам представлений, все с похожим внешним видом. В каждом контроллере представления есть кнопки, для которых я НЕ создал свойства IBOutlet (все они просто запускают переходы через Interface Builder).
Есть ли простой способ изменить цвет фона или цвет текста всех кнопок в приложении, не меняя его для каждой кнопки в IB или не создавая IBOutlet для каждой кнопки?
2 ответа
Вот основные шаги, которые упростят ситуацию, в вашем случае это придется повторить для каждого viewController.
Создайте одну розетку для всех ваших кнопок:
@IBOutlet var myButtons: [UIButton]!
Соедините (перетащите) эту розетку с каждой из кнопок на виде. Нажмите на каждую из кнопок в вашем интерфейсе и проверьте «Ссылка на коллекции торговых точек», находящиеся в
connections inspector
(последняя кнопка со стрелкой в круге). Обратите внимание, что все они должны быть связаны сmyButtons
.Создайте для кнопок стиль цикла for:
for button in self.myButtons { button.backgroundColor = UIColor.clearColor() button.layer.borderWidth = 1 button.layer.borderColor = UIColor.greenColor().CGColor }
Чтобы сделать это рабочее приложение широким, вам нужно изучить несколько вариантов. Вы можете использовать константы, поэтому, по крайней мере, когда вы хотите изменить стиль, вам нужно изменить только один файл: Константы в Objective-C a>, Файл глобальных констант в Swift.
В качестве альтернативы есть несколько способов сделать функцию общедоступной. Я попытаюсь получить пример кода, но класс с именем buttonStyle
может быть важен для каждого viewController и вызываться в цикле for: [buttonStyle styleButton:button]
. Функция styleButton
устанавливает стиль (я ничего для этого не тестировал).
Ознакомьтесь с этим ответом @zisoft: Как пройти через выходы UIViewController с помощью Swift, это более подробный журнал !.
Перейдите в свой appDelegate и измените (это изменит только цвет текста):
let buttonAppearance = UIButton.appearance()
buttonAppearance.tintColor = UIColor(red: 1.0, green:1.0, blue:1.0, alpha:1.0)
Это будет определять цвет текста, который требуется для всех ваших кнопок. Вы можете сделать то же самое для navigationBar, tabBar и т. Д.
Похожие вопросы
Связанные вопросы
Новые вопросы
ios
iOS - мобильная операционная система, работающая на Apple iPhone, iPod touch и iPad. Используйте этот тег [ios] для вопросов, связанных с программированием на платформе iOS. Используйте связанные теги [target-c] и [swift] для проблем, характерных для этих языков программирования.