Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.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 在swift中,您将全局方法放在哪里?_Ios_Swift - Fatal编程技术网

Ios 在swift中,您将全局方法放在哪里?

Ios 在swift中,您将全局方法放在哪里?,ios,swift,Ios,Swift,我的所有控制器都有一个共同的功能: func myColor() -> UIColor { return UIColor(red: 9.0/255.0, green: 134.0/255.0, blue: 255.0/255.0, alpha: 1) } 我可以将此函数放在何处,以便从任何控制器访问它?默认情况下,应用程序中的任何地方都可以使用所有默认访问范围(内部)函数。如果在不同的模块中定义了此函数,则需要使用publicmodifier 为了使代码更清晰,最好为UIColo

我的所有控制器都有一个共同的功能:

func myColor() -> UIColor {
    return UIColor(red: 9.0/255.0, green: 134.0/255.0, blue: 255.0/255.0, alpha: 1)
}

我可以将此函数放在何处,以便从任何控制器访问它?

默认情况下,应用程序中的任何地方都可以使用所有默认访问范围(
内部
)函数。如果在不同的模块中定义了此函数,则需要使用
public
modifier

为了使代码更清晰,最好为
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)
    }
}
然后您可以使用与默认
UIColor
颜色相同的
myColor
颜色

let systemColor = UIColor.blackColor()
let myColor = UIColor.myColor()
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) 如果计算颜色的公式对于每个类都不同,您可以尝试创建一个定义此函数和属性的协议。从该属性继承的每个类都必须提供自己的公式实现

您可以根据需要选择适当的解决方案


我希望这有帮助

为其添加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)