【发布时间】:2015-07-15 17:06:08
【问题描述】:
我创建了一个具有可变数量参数的函数。这是我的功能:
func setColors(colors: UIColor...) {
self.Colors = colors
}
现在当我向它传递一些值时:
setColors(UIColor.blackColor(), UIColor.redColor())
函数中的黑色将变为白色。这种事情只发生在黑色上,其他颜色都可以。
这个东西在一个类中用来生成渐变:
var Colors: [UIColor] = []
func setColors(colors: UIColor...) {
self.Colors = colors
}
override func drawRect(rect: CGRect) {
let context = UIGraphicsGetCurrentContext()
let colorSpace: CGColorSpaceRef = CGColorSpaceCreateDeviceRGB()
var colorComponent: [CGFloat] = []
var colorLocations: [CGFloat] = []
var i: CGFloat = 0.0;
for color in Colors {
let c = CGColorGetComponents(color.CGColor)
colorComponent.append(c[0])
colorComponent.append(c[1])
colorComponent.append(c[2])
colorComponent.append(c[3])
colorLocations.append(i)
i += CGFloat(1.0) / CGFloat(self.Colors.count)
}
let gradient: CGGradientRef = CGGradientCreateWithColorComponents(colorSpace, colorComponent, colorLocations, self.Colors.count)
CGContextDrawLinearGradient(context, gradient, CGPoint(x: 0.0, y: self.frame.size.height / 2), CGPoint(x: self.frame.size.width, y: self.frame.size.height / 2), 0)
}
【问题讨论】:
-
不是这样。你只是误读了输出。
-
@matt 不,我正在使用此函数在核心图形中创建渐变。结果是白色
-
我对此表示怀疑。您不能从 UIColor 创建渐变。您在其他地方的代码出错了,因为您没有从该颜色正确派生 CGColor。所以你的问题在别处。但是我(正确地)回答了您实际提出的问题。如果您问错了问题,请提出不同的问题。
-
我在渐变中使用
color.CGColor。正如我所说,渐变很好,但黑色在结果中显示为白色。 -
但是您没有显示该代码,所以我不相信您做对了。您可能错误地配置了渐变。我没有办法知道。我只知道你告诉我的。从你告诉我的来看,这只是误读输出的问题。你没有问任何渐变。您声称黑色将是白色在此函数中。我证明你错了。就这样结束了。我运行了你的代码。我得到了正确答案。完成。
标签: swift function parameter-passing uicolor