我需要将大约80个CALayer属性添加到UIViewController中,我想知道是否有人知道使用for循环执行此操作的方法,而不是像我这样复制和粘贴80行代码:
var colorButton1 = CALayer()
var colorButton2 = CALayer()
var colorButton1 = CALayer()
var colorButton2 = CALayer()
var colorButton1 = CALayer()
var colorButton2 = CALayer()
........(colorbuttons go to 60)
我知道如何在viewDidLoad方法中使用for循环创建对象,如下所示:
let colorLayers = 60
var colorLayer = CALayer()
var buttonYPosition:CGFloat = 0.0
for colorNum in 1...60 {
buttonYPosition = buttonYPosition + 50
colorLayer.contents = UIImage(contentsOfFile:NSBundle.mainBundle().resourcePath!.stringByAppendingPathComponent("color\(colorNum).png"))!.CGImage
colorLayer.frame = CGRectMake(device.x/2, buttonYPosition, worldScale * 380, worldScale * 180)
colorLayer.zPosition = 6.0
self.view.layer.addSublayer(colorLayer)
}
但这些不是属性。
那么如何在我的脚本顶部放置这样的东西,以便创建60个具有60个不同索引名称的属性,而不是60个具有相同名称的对象?
我甚至不确定这是可能的,我只是希望压缩我的代码。
答案 0 :(得分:3)
当处理相同类型的许多对象时,不应单独声明所有对象,而应该创建该对象类型的数组。对于function addDocument(req, res) {
// in scope
Request.findById(req.body._id, function(error, request){
if (request) {
// disappeared
} else {
res.send404('Couldn\'t find a request with that ID.');
}
});
}
,您可以使用CALayer
初始化程序初始化包含60个对象的数组,如下所示:
count:repeatedValue
请注意,您使用下标表示法访问各个图层,这比使用layer1,layer2,layer3等更清晰...
答案 1 :(得分:1)
使用CALayers数组:
var colorLayers = [CALayer]()