Swift 中的 CAGradientLayer 位置

Posted

技术标签:

【中文标题】Swift 中的 CAGradientLayer 位置【英文标题】:CAGradientLayer Locations in Swift 【发布时间】:2014-07-08 16:52:06 【问题描述】:

我知道 swift 数组可以连接到 NSarray。

Swift 数组只能包含一种类型。

我想快速设置 CAGradientLayer 的位置。

我需要 nil 终止数组。

是唯一的选择: A.) 最后创建一个带有浮点数和 nil 的 NSArray 对象? B.) 创建一个包含 anyObjects 数组的 swift 数组,以便我可以指定 nil?

我对如何解决这个问题有点困惑。

Swift nil != Objective C nil

这是否意味着我不能以与目标 c 相同的方式终止数组?

谢谢。

【问题讨论】:

【参考方案1】:

很简单:

let layer = CAGradientLayer()
let locations = [ 0.0, 1.0 ]
layer.locations = locations

请注意,Objective-C 数组不是零终止的。 你可能被语法弄糊涂了

NSArray *locations = [NSArray arrayWithObjects: loc1, loc2, nil];

这将创建一个包含 两个 对象的数组。 nil 只是变量参数列表的标记,不存储在数组中。事实上,Objective-C 数组根本无法存储nil。在“现代”Objective-C 中,这将被写为

NSArray *locations = @[loc1, loc2];

转换成上面的 Swift 代码。

【讨论】:

谢谢 我对位置的工作方式感到困惑 梯度停止点指定为 0 到 1 之间的值。这些值必须单调递增。如果为零,则止损均匀分布在整个范围内。默认为零。我认为这意味着当它从数组中读取时,它会等到它看到 nil 它停止传播颜色。

以上是关于Swift 中的 CAGradientLayer 位置的主要内容,如果未能解决你的问题,请参考以下文章

swift渐变之CAGradientLayer

swift Swift - CAGradientLayer

具有 r g b 值的 CAGradientLayer 不起作用 SWIFT

Swift - 通过 switch 语句为 CAGradientLayer 设置动画

Swift 2.1:CAGradientLayer 颜色定位和分布

Swift - 使用 animateWithDuration 淡化 CAGradientLayer