gpt4 book ai didi

ios - 在不丢失自动布局约束的情况下将 View 嵌入到 super View 中

转载 作者:IT王子 更新时间:2023-10-29 08:06:28 27 4
gpt4 key购买 nike

在 ios 应用程序中,我有一个自定义的 UITableViewCell,里面有很多 View 。我正在使用自动布局并根据需要设置所有约束。

但现在我需要有一个主视图(在内容 View 中)并将所有其他 View 放入其中(某种父 View )。

这是我的单元格在界面构建器中的外观示例:

enter image description here

它具有所有带有约束的 View 设置。

我知道有一个 xcode 功能可以将选定的 View 嵌入到父 View 中:

enter image description here

所以我选择所有 View 并选择将它们嵌入到 View 中。我得到以下信息:

enter image description here

我的问题

虽然 View 已正确嵌入到父 View 中,但自动布局约束已被删除,现在我必须重新创建它们。

有没有一种方法可以将所有 View 放在一个 super View 中并具有相同的自动布局约束,而不必重新创建它们?谢谢

最佳答案

正如上面评论中提到的,这种方法对我很有效:

indiestack.com/2013/12/transplanting-constraints

简而言之,方法是:

  1. 为您的旧父 View 提供一个 restorationId,以便您可以在 XML 中轻松识别它。
  2. 在文本编辑器 View 中打开您正在使用的 XIB/Storyboard。
  3. 将当前存在的内容复制并粘贴到备份文件中。
  4. 使用 Storyboard将您的内容嵌入到新的 super View 中。暂时不要设置任何新的约束条件。
  5. 为您的新 super View 提供一个恢复 ID,以便您可以在 XML 中轻松识别它。
  6. 并排打开当前 Storyboard/XIB 和您备份的旧 Storyboard/XIB。
  7. 通过搜索恢复 ID 在备份的 XML 中找到旧的容器 View 。复制 <constraints></constraints> 中的所有内容和 <subviews></subviews>标签
  8. 在当前XML中找到新的容器 View 并替换其<constraints></constraints>的内容和 <subviews></subviews>带有复制内容的标签
  9. 进入旧 XML 并复制旧容器的 ID。
  10. 进入新的 XML,并将您从第 9 步获得的旧 ID 替换为新容器在 <constraints></constraints> 中各处的 ID。你粘贴进去了。
  11. 不要忘记为与旧容器匹配的新容器添加约束(在我的例子中,这是将新容器固定到 super View 的所有边缘)。

警告:这将打破您可能已设置的约束的任何导出。其他事物、 View 等的导出......会很好。

关于ios - 在不丢失自动布局约束的情况下将 View 嵌入到 super View 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22738386/

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