Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在多个对象上同时应用dynamicBehavior_Ios_Arrays_Swift_Loops_Dynamic - Fatal编程技术网

Ios 如何在多个对象上同时应用dynamicBehavior

Ios 如何在多个对象上同时应用dynamicBehavior,ios,arrays,swift,loops,dynamic,Ios,Arrays,Swift,Loops,Dynamic,我正在尝试对刚从数组创建的标签对象使用DynamicBehaviors。为此,我使用“For In”循环。所有对象都按预期创建,但只有最后一个对象是动态的 也许我应该使用uidynamictemgroup,但经过多次尝试,我仍然不知道如何使用它 正如您可能想知道的,我是面向对象编程的新手,所以我希望这不会浪费您的时间 下面是我实际拥有的代码 提前谢谢 import UIKit class ViewController: UIViewController { var tests:[

我正在尝试对刚从数组创建的标签对象使用DynamicBehaviors。为此,我使用“For In”循环。所有对象都按预期创建,但只有最后一个对象是动态的

也许我应该使用uidynamictemgroup,但经过多次尝试,我仍然不知道如何使用它

正如您可能想知道的,我是面向对象编程的新手,所以我希望这不会浪费您的时间

下面是我实际拥有的代码

提前谢谢

import UIKit

class ViewController: UIViewController {



    var tests:[String] = ["test1","test2","test3","test4","test5","test6","test7","test8","test9","test10","test11"]
    var viewLabelArray:UIView!


    var label:UILabel!
    var color:UIColor!
    var animator:UIDynamicAnimator!


    var dynamicBehavior:UIDynamicBehavior!
    var collisionBehavior:UICollisionBehavior!
    var countLabel = 0


    override func viewDidLoad() {
        super.viewDidLoad()

        let size:CGFloat = 50.0
        var positionX:CGFloat = 60.0
        var positionY:CGFloat = 100.0


        for test in tests {
            label = UILabel(frame:CGRect(x: positionX, y: positionY, width: size, height: size))
            label.center = CGPoint(x: positionX, y: positionY)
            label.layer.cornerRadius = size * 0.5
            label.layer.masksToBounds = true
            label.backgroundColor = color
            label.textAlignment = .center
            label.textColor = UIColor.white
            label.adjustsFontSizeToFitWidth = true
            label.numberOfLines = 1
            label.text = test
            self.view.addSubview(label)

            countLabel = countLabel + 1

            if countLabel == 4 || countLabel == 8 {
                positionX = positionX - 140
                positionY = positionY + 100
            } else {
                positionX = positionX + 60
            }

            let gravity = UIGravityBehavior(items: [label])
            let direction = CGVector(dx: 0.0, dy: 1.0)
            gravity.gravityDirection = direction


            let bounce = UIDynamicItemBehavior(items: [label])
            bounce.elasticity = 1

            let boundries = UICollisionBehavior(items: [label])
            boundries.translatesReferenceBoundsIntoBoundary = true

            animator = UIDynamicAnimator(referenceView: self.view)


            animator.addBehavior(bounce)
            animator.addBehavior(boundries)
            animator.addBehavior(gravity)


        }
    }

}

我修改了你的一些代码,它对我来说非常适合

多亏了

屏幕截图:


您只有一个
UIDynamicAnimator
,并且在数组的每次迭代中都会覆盖它。只有最后一次覆盖也将持续,请修复所有隐式展开的选项。他们会打你屁股的,明白吗?字节。。。哈,谢谢你,亚历山大。我理解这个问题,并会找到解决方法。还有可选的(确实不是一个好习惯)。谢谢Ashok。通过创建UIDynamicMator数组实现了您的目标,但对我不起作用。您的“[i]”是否引用了一个循环(我得到了一个未解析的标识符)?我想越来越近了。我更新了,请检查。如果您遇到任何问题,请告诉我:-)
var animatorArray = [UIDynamicAnimator]()

for (i,test) in tests.enumerated() {
    //code
    let bounce = UIDynamicItemBehavior(items: [label])
    bounce.elasticity = 1

    let boundries = UICollisionBehavior(items: [label])
    boundries.translatesReferenceBoundsIntoBoundary = true

    animatorArray.append(UIDynamicAnimator(referenceView: self.view))
    animatorArray[i].addBehavior(gravity)
    animatorArray[i].addBehavior(bounce)
    animatorArray[i].addBehavior(boundries)
}