我有一个对我所有控制器都通用的功能:
func myColor() -> UIColor {
return UIColor(red: 9.0/255.0, green: 134.0/255.0, blue: 255.0/255.0, alpha: 1)
}
我可以在哪里放置此功能,以便可以从任何控制器访问它?
答案 0 :(得分:5)
默认情况下,应用程序中的所有默认访问范围(internal
)功能都可用。如果您在不同的模块中定义了此功能,则需要使用public
修饰符。
为了使您的代码更清晰,最好为UIColor
创建扩展名。
extension UIColor {
class func myColor() -> UIColor {
return UIColor(red: 9.0/255.0, green: 134.0/255.0, blue: 255.0/255.0, alpha: 1)
}
}
然后,您可以使用myColor
与默认UIColor
颜色相同的方式。
let systemColor = UIColor.blackColor()
let myColor = UIColor.myColor()
答案 1 :(得分:3)
1)您的函数每次都会在问题中返回相同的颜色吗?在这种情况下,为什么不在AppDelegate中将其设为静态颜色,您可以使用
访问任何地方(UIApplication.sharedApplication() as AppDelegate).myColor
2)如果您的颜色每次都会根据您的类属性返回不同的颜色,但对所有类使用相同的公式,例如
func myColor() -> UIColor {
return UIColor(red: (prop1 * 5)/255.0, green: prop2/255.0, blue: (prop3/2)/255.0, alpha: 1)
}
您可以在基类中定义prop1,prop2,prop3和函数,每个类都可以覆盖它们并为属性设置自己的值。该功能不需要被覆盖。
3)如果每个类的计算颜色的公式不同,您可以尝试制定定义此函数和属性的协议。从该属性继承的每个类都必须提供自己的公式实现。
您可以根据需要选择合适的解决方案。
我希望这有帮助!
答案 2 :(得分:0)
添加一个swift文件名 UIColorExt.swift :
import UIKit
class func RGB(r: CGFloat, _ g: CGFloat, _ b: CGFloat, _ alpha: CGFloat = 1.0) -> UIColor{
return UIColor(red: r/255.0, green: g/255.0, blue: b/255.0, alpha: alpha)
}
用法:
view.backgroundColor = UIColor.RGB(204, 119, 70)