Для приложения iOS9 +/Swift 3 со многими UIViewControllers, что является наилучшим способом унаследовать одни и те же цвета фона и другие общие атрибуты (шрифты, интервал и т. Д.). Лучше ли иметь общий базовый класс? Или какой-то протокол?Наследуйте цвет фона и другие атрибуты для многих UIViewControllers
ответ
Поскольку большинство визуальных атрибутов связаны с конкретными подклассами UIView и UIView (например, UILabel, UIButton и т. Д.), Я бы предположил, что если это обрабатывается на уровне UIViewController, это вынуждает диспетчер представлений отвечать за слишком много деталей другим классам.
Встроенный механизм Apple для установки глобальных визуальных атрибутов на различные виды - это API UIAppearance. Есть good overview of that on NSHipster
Недостатком использования UIAppearance является то, что нелегко вносить изменения в стиль, например, некоторые красные кнопки, а некоторые кнопки - синие. В основном это фиксированный внешний вид по умолчанию для всех экземпляров определенного вида в приложении.
Я лично предпочитаю использовать специальную структуру стилей, которая позволяет применять комбинации предопределенных стилей к представлениям. I have written about this, а также создал framework, чтобы облегчить создание стилей для компонентов UIKit и их применение и просмотр их внутри раскадровки.
Другого подхода для определения компонуемых и многоразовых стилей, если вы 're заинтересован: [StyleSheet] (https://github.com/werediver/StyleSheet). – werediver
У вас может быть файл констант с константами пользовательского интерфейса. Просто обратитесь к этим переменным во всех контроллерах представлений, и если вам нужно внести изменения, все остальное тоже изменится.
У вас также может быть расширение для определенных вещей. Обычно у меня есть расширение на UIColor, которое возвращает цвет, и я могу изменить его в расширении, и он изменится везде.
например.
extension UIColor{
class func selectedBlue() -> UIColor {
return UIColor(red:0.25, green:0.58, blue:0.97, alpha:1)
}
}
Вы можете иметь общий базовый класс для требуемого компонента для например настройки цвета фона ваших взглядов, создать подкласс пусть его имя будет BackgroundView.
class UHBView: UIView {
override func awakeFromNib() {
super.awakeFromNib()
self.backgroundColor = UIColor.blueColor(); //Any color you want
}
}
Теперь установите этот подкласс как пользовательский класс в инспекторе идентификации в Interface Builder для любого вида.
Это похоже на атрибут runtime, и у меня создается впечатление, что протоколы лучше, чем наследование в Swift ... но я действительно не знаю. –
- 1. Наследуйте цвет и подчеркивание цвета по ссылкам
- 2. цвет и цвет фона помощник
- 3. Цвет фона персонажа игрока (@), перекрывающий другие плитки
- 4. Скрывает ли это сокращение для фона другие атрибуты?
- 5. Rails вложенные атрибуты для многих из многих
- 6. Один для многих и виртуальные атрибуты
- 7. Обратный цвет и цвет фона
- 8. Цвет фона кузова не меняется, как и другие divs
- 9. CSS hover 2 других элемента (и другие атрибуты)
- 10. UITableViewController и цвет фона
- 11. Цвет фона для TabControl?
- 12. цвет фона для JTab
- 13. Цвет фона для UIActivityIndicatorView
- 14. ValueConverter для фона Цвет
- 15. флажок состояния и другие атрибуты
- 16. Цвет фона для div
- 17. Цвет фона для текста
- 18. Некоторые атрибуты, не изменяющиеся, но другие:
- 19. Xamarin формы - этикетки, цвет и другие атрибуты не обновляют, когда их переплетены атрибуты устанавливаются
- 20. QTextEdit изменить цвет фона и цвет скроллинга
- 21. Twwdbgrid.PaintOptions.ActiveRecordColor - изменить цвет фона и цвет шрифта
- 22. Цвет фона 50% один цвет и 50% другой цвет
- 23. Swift TabBar Цвет и цвет фона
- 24. iOS: Цвет фона - UITableView и аксессуар имеют одинаковый цвет фона
- 25. Обновить цвет фона фона
- 26. Оба шаблона и цвет для фона
- 27. этикетки и цвет фона для dropdownButton
- 28. Цвет фона для UITabBar и UINavigationBar
- 29. цвет фона для ионного переключения и диапазона
- 30. Цвет фона фона для оттенка цвета
«Если ваш вопрос можно ответить по всей книге, или есть ** много действительных ответов **, это, вероятно, слишком широко для нашего формата» – ZGski