【问题标题】:Move all subviews to container view keeping positions and constraints将所有子视图移动到容器视图保持位置和约束
【发布时间】:2014-04-15 09:07:40
【问题描述】:

我在我的项目中使用 Xcode 5 和自动布局。我有一个.xib 文件,其中有很多子视图和它们之间的约束。现在我需要创建一个中间全屏容器视图并将所有子视图放在那里。所以现在我有view->subviews,我想要view->container view->subviews。当我在 IB 中通过将子视图拖到容器视图中来执行此操作时,它们都居中并且所有约束都丢失了。手动恢复所有约束会有点困难。有没有一种聪明的方法来保持所有子视图的位置和约束?

【问题讨论】:

    标签: xcode cocoa-touch constraints autolayout xib


    【解决方案1】:

    将您的容器视图添加到 Interface Builder 中的层次结构(以获取对象 ID)并关闭视图。在文本编辑器中手动编辑.xib 文件,并将所有子视图移动到容器视图下。约束是在 IB 中使用对 IB 对象 ID 的引用创建的,因此您必须将约束从引用超级视图替换为容器;快速更换运行就足够了。

    【讨论】:

    • 我还需要为容器视图本身添加缺少的约束,但这不是问题。感谢您的出色解决方案!
    • 这是个好主意,但不幸的是,如果像我一样设置了很多约束,它们都有复杂的 ID 将它们链接在一起......我试图更新 ID,所以他们指出新的容器视图,但大多数都坏了!更新它们需要几个小时......Apple 你需要解决这个问题!
    • 我不敢相信这仍然是必要的...... FML。但是谢谢你,让我不用手动重新分配每个该死的布局约束。
    【解决方案2】:

    您可以在 Xcode 6 中通过使用剪切和粘贴到单独的视图来执行此操作(您可以稍后将其拖动到您实际需要的任何位置)。

    【讨论】:

    • 这是黄金,它实际上保留了所有约束!非常感谢。
    • 无法复制/粘贴
    • 它保持约束,但你需要重做所有的引用出口。
    • 它保持约束,但您可能需要重做视图的顺序。
    猜你喜欢
    • 2021-08-19
    • 1970-01-01
    • 2020-10-22
    • 1970-01-01
    • 2015-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-08
    相关资源
    最近更新 更多