【发布时间】:2018-05-11 16:24:04
【问题描述】:
我以前从未尝试过的事情,但我有一个如下所示的扩展(为简洁起见),我希望能够在代码中绘制出每种可用的颜色。我以前从未尝试过,并且无法将正确的搜索词组合在一起甚至接近。想法,指针?
我想以某种方式让let availableColors: [UIColor] = magicalFunctionHere(pointing 扩展)....
我想我必须创建自己的函数并手动插入扩展中的 UIColors。不过,我更愿意自动执行此操作。
extension UIColor {
class func firstColor ( alpha: CGFloat = 1.0 ) -> UIColor {
return UIColor.init ( red: 139.0/255.0, green: 322.0/255.0, blue: 405.0/255.0, alpha: alpha )
}
class func secondColor ( alpha: CGFloat = 1.0 ) -> UIColor {
return UIColor.init ( red: 225.0/255.0, green: 139.0/255.0, blue: 127.0/255.0, alpha: alpha )
}
}
【问题讨论】:
-
这可能会有所帮助,我确实已经看到了,但它是基于 instance 的,这不是我想要的。例如,我寻求能够查询可用颜色以从中创建一个数组,然后提供一个选择器。我会重新检查你的链接,以防我错过了要点;)..但是,内部代码显然存在,因为它显示在自动完成中。
-
您可以使用 Obj-C 运行时或使用
Mirror的反射,但一般而言,这将违反 OOP。 -
顺便说一句,您应该更喜欢使用
let常量作为颜色,然后使用UIColor.withAlphaComponent,而不是使用带有alpha参数的函数。 -
顺便说一句,您的颜色组件毫无意义。
322.0 / 255.0无效,因为1.0是组件的最大值。 -
感谢 sultham.. 很好地了解了这些数字,我只是从原始 git 中编辑了一些内容,而不仅仅是复制别人的工作。这是来自 GitHub 的 git,它在允许最终用户选择颜色方面可能非常有用,但产品的庞大规模使我无法手动进行。我只是在做一个穷人的混淆;)(阿尔法问题是 git 的一部分,而不是我的设计)。对于那些感兴趣的人,原件位于github.com/NorthernRealities/Rainbow。我正在评估 EVReflection 以完成我的目标。
标签: ios swift class swift4 extension-methods