在 Interface Builder 中交换视图但保持约束

Swap views but maintain constraints in Interface Builder

在 Interface Builder 中,我有一个 UIView 附加了一组复杂的约束。将此 UIView 替换为 UIImageView 而无需重新创建所有约束的最佳方法是什么?

删除 UIView 也会删除其约束。

注意:简单地将 UIView 的 class 设置为 UIImageView 是行不通的,因为它无法提供与图像视图相关的所有可变属性。

我认为您需要再次手动创建所有约束,但我会等待删除旧的 UIView 并将其用作参考,同时将所有约束参数复制到新的 UIImageView 上。

令人恼火的是,对此没有明智的答案。 IB 根本无法让您切换控件类型。哦,Xcode,你真让我们失望了

然而,有一个 hacky 方法可以做到这一点,由这个博客描述:http://codenetwaves.blogspot.com.br/2012/09/change-view-to-scrollview-in-xcode.html

步骤是:

  1. 右键单击情节提要,select打开为 --> 源代码

  2. 故事板是一个 XML 文件。找到您要更改的视图。将 <view ...> ... </view> 替换为 <imageView ...> ... </imageView>。不要更改任何其他内容。

  3. 再次右键单击故事板,然后在 Interface Builder 中打开。视图已转换为 UIImageView,您可以访问所有正常的 UIImageView 属性。