在 Xcode 中,如何重命名 Storyboard 中的约束?

Posted

技术标签:

【中文标题】在 Xcode 中,如何重命名 Storyboard 中的约束?【英文标题】:In Xcode, how can you rename a constraint in a Storyboard? 【发布时间】:2015-03-26 23:42:59 【问题描述】:

我正在 Xcode 中处理 Storyboard,我向正在处理的视图控制器添加了一个标签。由于我试图让我的所有应用程序都使用 Auto-Layout,所以我的第一反应是在 Label 中添加 Auto-Layout 约束。所以我在标签所在的超级视图的上边缘和左边缘添加了 2 个约束。我还在标签本身上添加了宽度和高度的约束,我知道我可以在之后修改约束的值以将它们设置为我希望他们成为什么。我的故事板如下所示:

然后我意识到我忘记将标签的名称更改为更具描述性的名称。由于这是我的主视图的标题标签,我将标签重命名为“标题”,并将***视图重命名为“主视图”。所以现在我的故事板看起来像这样:

然后我意识到我的约束仍然引用“标签”和“视图”,所以我去重命名它们。我突出显示了 Width 的约束,按 Enter 并获得了一个编辑文本字段,并将“Label”一词替换为“Title”,然后再次按 Enter。编辑文本字段关闭,但约束名称恢复为“标签”,而不是像我键入的“标题”。我又试了一次,结果一样。我尝试了高度约束,结果相同。它不会让我更改约束的名称。所以我删除了宽度约束并重新制作了一个宽度约束。现在它具有引用“标题”而不是“标签”的正确名称。但是我不想每次更改约束所绑定的 UI 元素的名称时都必须删除约束并重新创建它。

在我更改约束所绑定的元素的名称后,有什么方法可以重命名约束?

【问题讨论】:

【参考方案1】:

由于这一直困扰着我最近在几个应用程序中,我做了很多搜索试图找到一种方法来做到这一点。我在文本编辑器中打开 Storyboard 文件以搜索文本,但它不存在。我环顾了堆栈溢出,但找不到有关重命名情节提要约束的任何信息。然后我偶然发现了一个解决方案。这是我的解决方案。

点击你想改变的约束(先做一个宽度,但这并不重要)。在 Utilities 右侧部分,在第三个选项“Identity Inspector”下,在“Document”部分中有一个“Label”文本框,其中占位符文本显示“Xcode Specific Label”。如果在约束上按 enter,则可以突出显示现有名称并复制它。然后转到 Identity Inspector 中的 Label 文本框并将其粘贴到那里。您可以将“标签”一词更改为“标题”以适应新名称,然后按 Enter。您将在 Storyboard 层次结构中看到约束名称发生变化。

但你还没有完成!假设您想将标题的文本更改为您的特定标题名称:“我的特定标题”。好吧,当您这样做时,标签的宽度将不足以显示所有文本,因此您将宽度限制更新为 140,现在您可以看到整个标题。但是您的约束仍然显示“宽度 - (42) - 标题”,当您希望它读取“宽度 - (140) - 标题”时,因为您刚刚将宽度更新为 140。

事实证明,当您在身份检查器的“标签”字段中有任何文本时,它总是会说出该文本是什么。但是在您最初将名称更改为“宽度 - (42) - 标题”以匹配您的标签名称并按 Enter 或单击另一个字段(任何可以让它接受文本更改的内容)之后,您可以删除Label 文本框的内容和您的约束仍将引用新名称,然后在您更改约束时自动更新。因此,如果您将 Width 约束更改为 140,它现在将显示为“Width - (140) - Title”。

所以当你改变了一个元素的名字并且你想改变约束的名字之后,只需将当前的约束名字复制并粘贴到那个标签文本框中,按回车键让它进行改变,然后从标签文本框中删除它。

请注意,您无法更改约束名称的唯一原因是元素的名称首先被更改。如果您更改约束中的文本,而它仍然与约束中引用的元素匹配,那么它将允许您更改它,并且它会自动将新名称放入 Identity Inspector 的该标签文本框中。然后您可以更改元素的名称以匹配您在约束名称中输入的名称。但是因为您在该标签文本框中有文本,所以约束将始终显示该文本。因此,在元素名称与约束名称中的新文本匹配后,我建议从标签文本框中删除文本,以便在更改约束时约束名称会自动更新。

【讨论】:

以上是关于在 Xcode 中,如何重命名 Storyboard 中的约束?的主要内容,如果未能解决你的问题,请参考以下文章

在 Xcode 中,如何重命名 Storyboard 中的约束?

如何在 Xcode 5 中重命名项目?

Xcode 6如何重命名复制的目标

iphone 项目 - 在 xcode 4.3 中复制和重命名

Xcode,我如何完全重命名一个项目?

如何在不破坏文件的情况下重命名xcode项目中的文件夹名称