如何在Xcode中使用for循环声明属性

时间:2015-05-23 03:01:21

标签: ios xcode swift for-loop uiviewcontroller

我需要将大约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个具有相同名称的对象?

我甚至不确定这是可能的,我只是希望压缩我的代码。

2 个答案:

答案 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]()