首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从颜色和浮动的数组中创建NSGradient?

如何从颜色和浮动的数组中创建NSGradient?
EN

Stack Overflow用户
提问于 2016-08-03 16:48:28
回答 1查看 541关注 0票数 0

我有一个NSColor数组,以及一个CGFloat表示梯度停止的数组。我不知道如何使用这些数组初始化NSGradient

我试着把这些变成一个(NSColor, CGFloat)的数组,但是NSGradient(colorsAndLocations:不接受它,因为它期望varargs:

NSGradient(colors:, atLocations:, colorSpace:)希望有一个UnsafePointer,如果有这种方法的话,我不知道如何在Swift中正确地处理它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-03 17:41:28

我想你应该知道这个用法:

代码语言:javascript
复制
let cAndL: [(NSColor, CGFloat)] = [(NSColor.redColor(), 0.0), (NSColor.greenColor(), 1.0)]
let gradient = NSGradient(colorsAndLocations: cAndL[0], cAndL[1])

不幸的是,Swift并没有提供一种为各种函数提供数组的方法。

还有第二部分。如果某些API声称UnsafePointer<T>为数组,则可以创建T的Swift数组,并将其直接传递给API。

代码语言:javascript
复制
let colors = [NSColor.redColor(), NSColor.greenColor()]
let locations: [CGFloat] = [0.0, 1.0]
let gradient2 = NSGradient(colors: colors, atLocations: locations, colorSpace: NSColorSpace.genericRGBColorSpace())

如果您想利用Array of (NSColorCGFloat),可以编写如下内容:

代码语言:javascript
复制
let gradient3 = NSGradient(colors: cAndL.map{$0.0}, atLocations: cAndL.map{$0.1}, colorSpace: NSColorSpace.genericRGBColorSpace()) 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38749420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档