我正在努力提高我的面向对象技能,而且我总是在争论是否需要课程.
我有一组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(计算属性)看起来很奇怪.
任何改进我的代码的建议.
编辑:不重复,因为我有兴趣改进我的面向对象的例子,而不是知道全局变量是否可以使用.
谢谢
绝对是一个好主意,但你可以通过扩展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()在每个视图控制器中放置一个.
| 归档时间: |
|
| 查看次数: |
537 次 |
| 最近记录: |