我想在点击某个按钮时移动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)
我的标签更新,但我的图片视图不会移动。
我做错了什么?
答案 0 :(得分:0)
更新标签并将图像放回原来的位置时,AutoLayout正在运行。您有几种方法可以解决这个问题。选择一个:
关闭AutoLayout。大多数人不选择此选项,因为他们希望他们的布局能够在多个设备上运行。
以编程方式而不是在Interface Builder中创建imageView。如果你这样做,它将不受AutoLayout的限制,你可以自由移动它。
使用AutoLayout约束放置imageView。将IBOutlet
添加到这些约束中并更新代码中的constant
值,而不是修改框架。
调用plusButton
时,将imageView的新框架存储在ViewController的属性中,然后将该框架置于覆盖viewDidLayoutSubviews
的位置,这在AutoLayout运行后发生