对于具有许多UIViewControllers的iOS9 + / Swift 3应用程序,继承相同背景颜色和其他常见属性(字体,间距等)的最佳实践方法是什么。有一个共同的基类是最好的吗?还是某种协议?
答案 0 :(得分:3)
因为大多数可视属性与特定的UIViews和UIView子类(如UILabel,UIButton等)相关联,所以我建议在UIViewController级别处理这个属性会强制视图控制器负责太多特定于其他课程。
Apple用于在各种视图上设置全局可视属性的内置机制是UIAppearance API。有一个good overview of that on NSHipster
使用UIAppearance的缺点是不容易适应造型的变化,例如某些按钮为红色,而某些按钮为蓝色。它基本上是应用程序中某个视图的所有实例的固定默认外观。
我个人更喜欢使用专用样式框架,允许将预定义样式组合应用于视图。我have written about this并创建了一个framework,以便于为UIKit组件创建样式,并在故事板中应用和预览它们。
答案 1 :(得分:1)
你可以拥有一个包含UI常量的常量文件。只需在所有视图控制器中引用这些变量,如果需要进行更改,其他所有内容都会发生变化。
您还可以为某些内容添加扩展程序。我通常在UIColor上有一个扩展,它返回一个颜色,我可以在扩展中更改它,它会在其他地方改变。
e.g。
extension UIColor{
class func selectedBlue() -> UIColor {
return UIColor(red:0.25, green:0.58, blue:0.97, alpha:1)
}
}
答案 2 :(得分:0)