为什么在更新标签值时我的UIImageView坐标会发生变化?

时间:2014-12-28 21:26:50

标签: ios swift imageview cgrect

我想在点击某个按钮时移动UIImageView。我有这段代码:

@IBOutlet weak var counter: UILabel!
@IBOutlet weak var indexCrow: UIImageView!

var crow = 0

@IBAction func plusButton(sender: UIButton) {  // Plus Button
    indexCrow.frame = CGRect(x: indexCrow.frame.origin.x + 20, y: indexCrow.frame.origin.y, width: indexCrow.frame.size.width, height: indexCrow.frame.size.height)
    crow++
    counter.text = String(crow)

}

如果我删除了行counter.text = String(crow),我的图片视图会正确移动,但我的标签不会更新。如果我写counter.text = String(crow)我的标签更新,但我的图片视图不会移动。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

更新标签并将图像放回原来的位置时,AutoLayout正在运行。您有几种方法可以解决这个问题。选择一个:

  1. 关闭AutoLayout。大多数人不选择此选项,因为他们希望他们的布局能够在多个设备上运行。

  2. 以编程方式而不是在Interface Builder中创建imageView。如果你这样做,它将不受AutoLayout的限制,你可以自由移动它。

  3. 使用AutoLayout约束放置imageView。将IBOutlet添加到这些约束中并更新代码中的constant值,而不是修改框架。

  4. 调用plusButton时,将imageView的新框架存储在ViewController的属性中,然后将该框架置于覆盖viewDidLayoutSubviews的位置,这在AutoLayout运行后发生