Swift中的CAGradientLayer位置

时间:2014-07-08 16:52:07

标签: ios objective-c arrays swift cagradientlayer

我知道swift数组与NSarray相连。

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

我想在swift中设置CAGradientLayer的位置。

我需要nil终止数组。

是唯一的选择: A.)创建一个带浮点数的NSArray对象,最后是否为零? B.)创建一个包含anyObject数组的swift数组,这样我可以指定nil?

我对如何处理这个问题感到有些困惑。

Swift nil!= Objective C nil

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

感谢。

1 个答案:

答案 0 :(得分:4)

这很简单:

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

请注意,Objective-C阵列 nil-terminated。 您可能会对语法

感到困惑
NSArray *locations = [NSArray arrayWithObjects: loc1, loc2, nil];

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

NSArray *locations = @[loc1, loc2];

并转换为上面的Swift代码。