Ios 在超级视图中嵌入视图而不丢失自动布局约束

Ios 在超级视图中嵌入视图而不丢失自动布局约束,ios,iphone,uiview,interface-builder,autolayout,Ios,Iphone,Uiview,Interface Builder,Autolayout,在ios应用程序中, 我有一个自定义UITableViewCell,其中包含许多视图。我正在使用自动布局,并根据需要设置所有约束 但现在我需要有一个主视图(在内容视图中),并将所有其他视图放在其中(某种程度上是所有视图的父视图) 以下是界面生成器中my cell的外观示例: 它具有使用约束设置的所有视图 我知道有一个xcode功能可以将选定视图嵌入父视图中: 因此,我选择所有视图并选择将它们嵌入到视图中。我得到以下信息: 我的问题 尽管视图正确嵌入到superview中,但autolayo

在ios应用程序中, 我有一个自定义UITableViewCell,其中包含许多视图。我正在使用自动布局,并根据需要设置所有约束

但现在我需要有一个主视图(在内容视图中),并将所有其他视图放在其中(某种程度上是所有视图的父视图)

以下是界面生成器中my cell的外观示例:

它具有使用约束设置的所有视图

我知道有一个xcode功能可以将选定视图嵌入父视图中:

因此,我选择所有视图并选择将它们嵌入到视图中。我得到以下信息:

我的问题

尽管视图正确嵌入到superview中,但autolayout约束已被删除,现在我必须重新创建它们

是否有一种方法可以将所有视图放在superview中,并具有相同的自动布局约束,而无需重新创建所有视图?
谢谢

您是否尝试过创建容器视图的约束?您不需要重新创建所有约束


它们看起来不正确,因为它们失去了父约束。

如上所述,这种方法对我很有效:

简言之,方法是:

  • 为旧superview提供restorationId,以便在XML中轻松识别它
  • 在文本编辑器视图中打开正在使用的XIB/故事板
  • 将当前存在的内容复制并粘贴到备份文件中
  • 使用情节提要将内容嵌入到新的superview中。不要设置任何新的约束
  • 为新的superview提供一个恢复ID,以便在XML中轻松识别它
  • 将当前情节提要/XIB与备份的旧情节提要/XIB并排打开
  • 通过搜索恢复ID在备份的XML中查找旧容器视图。复制
    标记中的所有内容
  • 在当前XML中找到新的容器视图,并用复制的内容替换其
    标记的内容
  • 进入旧XML并复制旧容器的ID
  • 进入新的XML,用粘贴的
    中新容器的ID替换步骤9中得到的旧ID
  • 不要忘记为新容器添加与旧容器匹配的约束(在我的例子中,这是将新容器固定到超级视图的所有边缘)
  • 警告:
    这将打破您可能设置的任何限制。其他事物、观点等的出口。。。一切正常。

    在xib的顶层创建一个新视图。然后将现有视图拖到其中。现有的限制仍然存在。您只需为嵌入设置新的约束。

    • 选择所有视图
    • 转到编辑器->嵌入到->视图
    • 再次选择所有视图
    • 添加新约束,将顶部、底部、前导、尾部固定为0

    您可能想查看我不想将此设置为答案,因为当我在自己的项目中尝试此方法时,没有成功。我希望这会有帮助。这仍然很有效。在我的例子中唯一不同的是,我需要用新容器视图的id替换“安全区域”的id,因为所有约束最初都是针对它的,而不是视图控制器父视图…注意:如果您有大小类变化,则必须在移植中包含
    块。您是一个救生员。我手动添加到父视图中,并且不得不再次重新设置所有约束。这使事情变得更容易。还有一点需要注意:在选择视图时,不要选择整个层次结构的安全区域或根视图