gpt4 book ai didi

iOS/Swift : Keep "global" view pan from resetting other objects' positions, w/AutoLayout ON?

转载 作者:行者123 更新时间:2023-11-28 13:08:32 28 4
gpt4 key购买 nike

刚开始学习Swift,关注优秀UIGestureRecognizer tutorial on Ray Wenderlich's site .它有两个图像,您可以四处移动(平移)和缩放(捏合)和旋转。工作正常。

但后来我尝试通过向主视图添加一个平移手势识别器来扩展它,这样我就可以一次平移“场景”。以与两个图像相同的方式将其连接到 ViewController。这行得通,但是每次您在主视图中平移时,它都会重置其他对象的位置,即它们会移回运行开始时的位置,而忘记您可能移动的位置

这是一个 AutoLayout 问题(如线程 UILabel causing other objects to reset position on iOS 中所述)。 (虽然我觉得这很奇怪,因为根本没有任何限制。随便吧。)

关闭 AutoLayout 确实可以防止任何重置发生,但是......出于其他原因,最终我想使用 AutoLayout 构建一个应用程序,所以我想在启用 AutoLayout 的情况下进行。

因此,根据 UIView frames reset when using autolayout 向 viewDidLoad() 添加了一些代码,即在 Storyboard 中,我从“主视图”对象控制拖动到 ViewController.swift 的助理编辑器中,一行内容为

@IBOutlet var mainView: UIView!

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

mainView.translatesAutoresizingMaskIntoConstraints = true

但这没有效果,即重置行为仍然发生。 :-( 不会生成有关“无法同时满足约束”的警告。

有什么帮助吗?谢谢。运行 XCode 7 beta 5。

最佳答案

解决了!啊。所以是其他对象,而不是主视图,需要这段代码!即代码现在读取...

@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 仍然启用! :-)

关于iOS/Swift : Keep "global" view pan from resetting other objects' positions, w/AutoLayout ON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32040207/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com