iOS/Swift:防止视图平移重置其他对象的位置"global"自动布局打开?



刚刚开始学习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
}

通过这些更改,没有不必要的重置发生,但自动布局是在!: -)

最新更新