Ios 有没有一种方法可以在应用程序中使用配色方案,而不必在代码的每个部分单独写入颜色值?
我正在开发一个具有多个屏幕的单视图应用程序。我想在应用程序中使用多种深浅的蓝色。现在,我正在访问多个ViewController中每个视图的UIColor/cgColor属性,以指定特定的颜色。 例如: 以及 以及Ios 有没有一种方法可以在应用程序中使用配色方案,而不必在代码的每个部分单独写入颜色值?,ios,swift,colors,Ios,Swift,Colors,我正在开发一个具有多个屏幕的单视图应用程序。我想在应用程序中使用多种深浅的蓝色。现在,我正在访问多个ViewController中每个视图的UIColor/cgColor属性,以指定特定的颜色。 例如: 以及 以及 我想知道是否有一种方法可以定义所有颜色,而无需在多个视图控制器中使用多行代码。我想您正在寻找代理。请参阅有关如何使用它的文档,例如: UITableView.appearance().backgroundColor=.green 您可能还希望使用自定义颜色进行扩展,如: 扩展UIC
我想知道是否有一种方法可以定义所有颜色,而无需在多个视图控制器中使用多行代码。我想您正在寻找代理。请参阅有关如何使用它的文档,例如:
UITableView.appearance().backgroundColor=.green
您可能还希望使用自定义颜色进行扩展,如:
扩展UIColor{
类var customColor:UIColor{
返回UIColor.init(红色:0/255,绿色:178/255,蓝色:1,alpha:0.5)
}
}
您可以创建一个结构来创建静态值
struct-AppThemeColor{
静态func cellLayerColor()->UIColor{
返回UIColor.init(红色:0/255,绿色:178/255,蓝色:1,alpha:0.5)
}
静态func cellBackgroundColor()->UIColor{
返回UIColor.init(红色:0/255,绿色:128/255,蓝色:1,alpha:1)
}
// ...
}
要得到颜色很简单
cell.backgroundColor=AppThemeColor.cellBackgroundColor()
似乎最好的方法是创建颜色扩展:
extension UIColor {
static var borderColor: UIColor {
return UIColor.init(red: 0/255, green: 178/255, blue: 1, alpha: 0.5)
}
static var backgroundColor: UIColor {
return UIColor.init(red: 0/255, green: 128/255, blue: 1, alpha: 1)
}
}
然后使用它:
cell.layer.borderColor = UIColor.borderColor.cgColor
cell.layer.backgroundColor = UIColor.backgroundColor.cgColor
对于更通用的方法,您可以使用UIAppearance协议,例如,对于您的案例,您可以创建扩展
extension UITableViewCell {
@objc public var borderColor: UIColor? {
set { layer.borderColor = newValue?.cgColor }
get { return layer.borderColor.map({ UIColor(cgColor: $0)}) }
}
@objc public var layerBackgroundColor: UIColor? {
set { layer.backgroundColor = newValue?.cgColor }
get { return layer.backgroundColor.map({ UIColor(cgColor: $0)}) }
}
}
然后在代码中使用它:
UITableViewCell.appearance().borderColor = UIColor.borderColor
UITableViewCell.appearance().layerBackgroundColor = UIColor.backgroundColor
有关更多详细信息,您可以查看:
和
cell.layer.borderColor = UIColor.borderColor.cgColor
cell.layer.backgroundColor = UIColor.backgroundColor.cgColor
extension UITableViewCell {
@objc public var borderColor: UIColor? {
set { layer.borderColor = newValue?.cgColor }
get { return layer.borderColor.map({ UIColor(cgColor: $0)}) }
}
@objc public var layerBackgroundColor: UIColor? {
set { layer.backgroundColor = newValue?.cgColor }
get { return layer.backgroundColor.map({ UIColor(cgColor: $0)}) }
}
}
UITableViewCell.appearance().borderColor = UIColor.borderColor
UITableViewCell.appearance().layerBackgroundColor = UIColor.backgroundColor