刚刚开始学习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.
答案 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! : - )