iOS / Swift:保持"全球"查看平移以重置其他对象'职位,自动平局开启?

时间:2015-08-16 21:40:07

标签: ios xcode swift uiview autolayout

刚刚开始学习Swift,遵循优秀的UIGestureRecognizer tutorial on Ray Wenderlich's site。它有两个图像可以移动(平移)和缩放(捏合)和旋转。工作良好。

然后我尝试通过在主视图中添加一个Pan Gesture识别器来扩展它,这样我就可以平移场景"一次全部。以与两个图像相同的方式将其连接到ViewController。哪个有效,但每次你在主视图中平移时,重置其他对象的位置,即它们会回到运行开始时的位置,忘记你可能移动的任何地方他们来。

这是一个AutoLayout问题(如线程UILabel causing other objects to reset position on iOS中所述)。 (虽然我发现这很奇怪,因为根本没有任何约束。无论如何。)

关闭AutoLayout确实可以防止任何重置,但是...... 最终我想用其他原因使用AutoLayout构建一个应用程序,所以我想用AutoLayout来实现。

所以,根据UIView frames reset when using autolayout向viewDidLoad()添加了一些代码, 即在故事板中,我控制 - 从"主视图"对象进入ViewController.swift的助手编辑器,这是一行

@IBOutlet var mainView: UIView!

然后在我的viewDidLoad中,我添加了

mainView.translatesAutoresizingMaskIntoConstraints = true

但这没有效果,即仍然会发生重置行为。 :-(没有关于&#34的警告;无法同时满足约束"生成。

有任何帮助吗?谢谢。运行XCode 7 beta 5.

1 个答案:

答案 0 :(得分:2)

解决!啊。因此,需要此代码的是OTHER对象,而不是主视图!即代码现在读取...

@IBOutlet var mainView: UIView!
@IBOutlet weak var monkeyView: UIImageView!
@IBOutlet weak var bananaView: UIImageView!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    //self.mainView.translatesAutoresizingMaskIntoConstraints = true // not needed
    self.monkeyView.translatesAutoresizingMaskIntoConstraints = true
    self.bananaView.translatesAutoresizingMaskIntoConstraints = true
}

通过这些更改,不会发生意外重置,但仍会启用AutoLayout! : - )