繁体   English   中英

在Xcode中,如何重命名情节提要中的约束?

[英]In Xcode, how can you rename a constraint in a Storyboard?

我正在使用Xcode编写情节提要,并且向正在使用的视图控制器中添加了标签。 由于我尝试使所有应用程序都使用自动版式,因此我的第一反应是将自动版式约束添加到标签。 因此,我向Label所在的超级视图的顶部和左侧边缘添加了2个约束。我还为Label本身的Width和Height添加了约束,我知道以后可以修改约束的值以将其设置为我希望他们成为什么样子。 我的故事板如下所示:

具有4个约束的标签

然后我意识到我忘记将Label的名称更改为更具描述性的名称。 由于这是我的主视图的“标题”标签,因此我将标签重命名为“标题”,还将顶级视图重命名为“ MainView”。 所以现在我的情节提要看起来像这样:

MainView中具有约束的标题

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

在更改约束所绑定的元素的名称之后,是否可以重命名约束?

由于最近这已经困扰了我几个应用程序,因此我进行了很多搜索,试图找到一种实现此目的的方法。 我在文本编辑器中打开了Storyboard文件,以搜索文本,但该文本文件不存在。 我环顾了堆栈溢出,但找不到重命名情节提要约束的任何内容。 然后我偶然发现了一个解决方案。 这是我的解决方案。

单击要更改的约束(首先执行“宽度”,但这并不重要)。 在“实用程序”右侧部分的第三个选项“身份检查器”下,在“文档”部分中,有一个“标签”文本框,其中的占位符文本为“ Xcode Specific Label”。 如果在约束上按Enter键,则可以突出显示现有名称并进行复制。 然后转到“身份检查器”中的“标签”文本框,并将其粘贴到此处。 您可以将单词“ Label”更改为“ Title”以适应新名称,然后按Enter。 您将在情节提要板层次结构中看到约束名称的更改。

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

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

因此,在更改元素名称并且还想要更改约束的名称之后,只需将当前约束名称复制并粘贴到该Label文本框中,按Enter进行更改,然后从中删除标签文本框。

请注意,您无法更改约束名称的唯一原因是因为元素的名称已首先更改。 如果在约束中仍与约束中引用的元素匹配的情况下更改了约束中的文本,则它将允许您对其进行更改,并且它将自动将新名称放入Identity Inspector的那个Label文本框中。 然后,您可以更改元素的名称以匹配您在约束名称中输入的名称。 但是因为您在那个Label文本框中有文本,约束将始终显示该文本。 因此,在元素名称与约束名称中的新文本匹配之后,建议您从“标签”文本框中删除文本,以便在更改约束时约束名称将自动更新。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM