Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.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 从UIColors或NSColors数组创建CGColors数组_Ios_Swift_Cocoa Touch_Cagradientlayer_Cgcolor - Fatal编程技术网

Ios 从UIColors或NSColors数组创建CGColors数组

Ios 从UIColors或NSColors数组创建CGColors数组,ios,swift,cocoa-touch,cagradientlayer,cgcolor,Ios,Swift,Cocoa Touch,Cagradientlayer,Cgcolor,我一直在测试CAGradientLayer为iOS和Mac OS X Cocoa创建渐变色。例如,我有以下几行代码为iOS创建渐变色 let gradient: CAGradientLayer = CAGradientLayer() gradient.frame = view.bounds gradient.colors = [UIColor.orangeColor().CGColor,UIColor.redColor().CGColor] gradient.locations = [0.1,0

我一直在测试CAGradientLayer为iOS和Mac OS X Cocoa创建渐变色。例如,我有以下几行代码为iOS创建渐变色

let gradient: CAGradientLayer = CAGradientLayer()
gradient.frame = view.bounds
gradient.colors = [UIColor.orangeColor().CGColor,UIColor.redColor().CGColor]
gradient.locations = [0.1,0.9]
self.view.layer.insertSublayer(gradient,atIndex:0)
现在,我拥有的是一组颜色UIColor或NSColor,具体取决于开发平台。如果以编程方式创建包含UIColor或NSColor对象的数组,从

var cArray = [UIColor]() 

,如何创建包含CGColors的数组?我想这可能有关系。一个问题是我不知道如何声明和初始化CGColor对象数组

谢谢你

你可以做:

extension _ArrayType where Generator.Element == UIColor {
    func CGColors() -> [CGColorRef] {
        var cgColorArray: [CGColorRef] = []

        for color in self {
            cgColorArray.append(color.CGColor)
        }

        return cgColorArray
    }
}
像这样使用它:

let colors: [UIColor] = [UIColor.redColor(), UIColor.orangeColor()]
colors.CGColors()

对NSColor重复上述操作。

我还想对函数映射进行一些注意

    let colors: [UIColor] = [UIColor.redColor(), UIColor.orangeColor()]
    let cgColors: [CGColor] = colors.map({ $0.CGColor })
map将闭包应用于数组中的每个元素并返回它

$0是闭包的第一个也是唯一一个参数

它实际上是一个缩写:

    let cgColors: [CGColor] = colors.map({ return $0.CGColor })
    let cgColors: [CGColor] = colors.map({
        color: in
        return color.CGColor
    })
    let cgColors: [CGColor] = colors.map({
        (color: UIColor) in
        return color.CGColor
    })
这是以下内容的简写:

    let cgColors: [CGColor] = colors.map({ return $0.CGColor })
    let cgColors: [CGColor] = colors.map({
        color: in
        return color.CGColor
    })
    let cgColors: [CGColor] = colors.map({
        (color: UIColor) in
        return color.CGColor
    })
这是以下内容的简写:

    let cgColors: [CGColor] = colors.map({ return $0.CGColor })
    let cgColors: [CGColor] = colors.map({
        color: in
        return color.CGColor
    })
    let cgColors: [CGColor] = colors.map({
        (color: UIColor) in
        return color.CGColor
    })

您可以使用来了解自己在哪个平台上,以及可能处理正确颜色的对象:MyCustomObjectColor.redColor.cgColorn简单的映射如何:让cgcolors=uicolors.map{$0.CGColor}还考虑使用SkCuor作为平台无关别名,以UICOLor或NSCORE。谢谢。但是如何声明和初始化CGColor对象数组呢?var cgColorArray:[CGColorRef]=[]哦,对不起。。。正当不过,我在返回cgColorArray时出错了。我想我只需要知道如何声明和初始化CGColor数组。谢谢,好的。谢谢你给我看一些新东西。但我还不知道它与CGColor对象数组的创建有什么关系,它又有什么关系呢?这是CGColor数组的实际创建。不需要扩展。请问哪一行显示CGColor对象的数组?colors.map{$0.CGColor}?变量cgColors是cgColors的数组,由其类型[CGColor]表示。实际上。。。那很有趣。谢谢