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 位置的主要内容,如果未能解决你的问题,请参考以下文章
具有 r g b 值的 CAGradientLayer 不起作用 SWIFT
Swift - 通过 switch 语句为 CAGradientLayer 设置动画