将在整个应用程序或类中使用的颜色

fs_*_*gre 2 oop ios swift

我正在努力提高我的面向对象技能,而且我总是在争论是否需要课程.

我有一组UIColors,我一直在不同的ViewControllers中使用我的应用程序,我最初开始时将它们添加为常量全局,如下所示...

import UIKit
// Global COLORS
let myBlueColor = UIColor(red: 62.0/255, green: 174.0/255, blue: 206.0/255, alpha: 1.0)
// more global colors here...
class ViewController1{
   // using my global color
   myButton.layer.borderColor = myBlueColor.CGColor
}


// other viewController
import UIKit
class ViewController2{
   // using my global color again
   myButton2.layer.borderColor = myBlueColor.CGColor
}
Run Code Online (Sandbox Code Playgroud)

但后来我决定创建一个类来强迫自己以更加面向的方式思考......

颜色类

import Foundation
import UIKit

class Color {

    var myBlueColor:UIColor{
        get{
          return UIColor(red: 62.0/255, green: 174.0/255, blue: 206.0/255, alpha: 1.0)
        }
    }
    var myLightGrayColor:UIColor{
        get{
            return UIColor(red: 249.0/255, green: 249.0/255, blue: 249.0/255, alpha: 1.0)
        }
    }
    var myGreenColor:UIColor{
        get{
            return UIColor(red: 110.0/255, green: 186.0/255, blue: 64.0/255, alpha: 1.0)
        }
    }
    var myRedColor:UIColor{
        get{
            return UIColor(red: 247.0/255, green: 118.0/255, blue: 113.0/255, alpha: 1.0)
        }
    }
    var myYellowColor:UIColor{
        get{
            return UIColor(red: 255.0/255, green: 190.0/255, blue: 106.0/255, alpha: 1.0)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

查看控制器

import UIKit
class ViewController1{

   private var myColor = Color()

   // some other code here...

   myButton.layer.borderColor = myBlueColor.CGColor
}
Run Code Online (Sandbox Code Playgroud)

其他视图控制器

import UIKit
class ViewController1{

   private var myColor = Color()

   // some other code here...

   myButton2.layer.borderColor = myBlueColor.CGColor
}
Run Code Online (Sandbox Code Playgroud)

我的面向对象是一种更好的方法吗?好吧,让我重新说一下,这甚至是你如何以更面向对象的方式做到这一点?

我不知道,但我的Color类只是使用getter(计算属性)看起来很奇怪.

任何改进我的代码的建议.

编辑:不重复,因为我有兴趣改进我的面向对象的例子,而不是知道全局变量是否可以使用.

谢谢

cre*_*eak 5

绝对是一个好主意,但你可以通过扩展UIColor并使所有类函数完全与内置函数完全相同的方式使其更加清晰UIColor.whiteColor().

你可以这样做:

extension UIColor {

class func peachColor() -> UIColor {
    return UIColor(colorLiteralRed: 100.00 / 100.00, green: 92.9 / 100.0, blue: 65.9 / 100.0, alpha: 1.0)
}
...
Run Code Online (Sandbox Code Playgroud)

}

然后,在你的应用程序的任何地方,你可以说UIColor.peachColor(),它将完美地工作.这些类扩展是一种干净的方法,它可以让你避免var myColor = Color()在每个视图控制器中放置一个.