刚刚开始学习Swift,跟随Ray Wenderlich网站上优秀的UIGestureRecognizer教程。它有两个图像,你可以移动(平移),缩放(捏)和旋转。工作很好。
但后来我尝试通过在主视图中添加平移手势识别器来扩展它,这样我就可以一次平移"场景"。用和这两个图像相同的方式把它连接到ViewController上。这是有效的,但每次你在主视图中移动时,它重置其他对象的位置,即它们移动回它们在运行开始时的位置,忘记你可能将它们移动到的位置。
这是一个自动布局问题(如线程UILabel所述,导致其他对象在iOS上重置位置)。(虽然我觉得这很奇怪,因为根本没有任何限制。等等。)
关闭自动布局确实使任何重置发生,然而....最终我想建立一个应用程序使用自动布局的其他原因,所以我想做它与自动布局在。
所以,添加了一些代码viewDidLoad()作为每个UIView帧重置时使用自动布局,也就是在Storyboard中,我从"Main View"对象control-drag到viewcontroller。swift的助理编辑器中,写一行
@IBOutlet var mainView: UIView!
然后在viewDidLoad中,我添加了
mainView.translatesAutoresizingMaskIntoConstraints = true
但这没有效果,即重置行为仍然发生。:-(没有生成"无法同时满足约束"的警告。
帮忙吗?谢谢。
解决!啊。所以需要这些代码的是其他对象,而不是主视图!例如,代码现在读取…
@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
}
通过这些更改,没有不必要的重置发生,但自动布局是在!: -)