Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 有没有一种方法可以在应用程序中使用配色方案,而不必在代码的每个部分单独写入颜色值?_Ios_Swift_Colors - Fatal编程技术网

Ios 有没有一种方法可以在应用程序中使用配色方案,而不必在代码的每个部分单独写入颜色值?

Ios 有没有一种方法可以在应用程序中使用配色方案,而不必在代码的每个部分单独写入颜色值?,ios,swift,colors,Ios,Swift,Colors,我正在开发一个具有多个屏幕的单视图应用程序。我想在应用程序中使用多种深浅的蓝色。现在,我正在访问多个ViewController中每个视图的UIColor/cgColor属性,以指定特定的颜色。 例如: 以及 以及 我想知道是否有一种方法可以定义所有颜色,而无需在多个视图控制器中使用多行代码。我想您正在寻找代理。请参阅有关如何使用它的文档,例如: UITableView.appearance().backgroundColor=.green 您可能还希望使用自定义颜色进行扩展,如: 扩展UIC

我正在开发一个具有多个屏幕的单视图应用程序。我想在应用程序中使用多种深浅的蓝色。现在,我正在访问多个ViewController中每个视图的UIColor/cgColor属性,以指定特定的颜色。 例如:

以及

以及


我想知道是否有一种方法可以定义所有颜色,而无需在多个视图控制器中使用多行代码。

我想您正在寻找代理。请参阅有关如何使用它的文档,例如:

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