Xcode 9在堆栈视图中设置0行到14,600.5高度的标签

时间:2017-09-20 20:01:41

标签: ios xcode

在Xcode 9中,我将继续学习AppCoda教程以开始iOS开发。我注意到一些奇怪的行为,我想知道这是一个错误还是我不了解Interface Builder中的堆栈视图(因为应用程序在我的手机上编译并正确显示)。

当我放置Label并将其设置为堆栈视图中的第三个元素(两个其他嵌套堆栈视图的兄弟)时,如果使用默认属性,它似乎很好。但是,当我将lines属性从1更改为0时,标签和相邻堆栈视图将从界面构建器中消失。

Before

After

在尺寸检查器中,标签的坐标从0,208.5更改为0,-90。如果我更改这些属性,标签的高度将从0,0变为375,14600.5,并且Xcode会抛出错误:Interface Builder不支持大于10,000 x 10,000的UILabel大小。

这是Xcode的一个错误,还是这个版本的Xcode的line属性有一些改变的行为(这本书目前涵盖了Xcode 8)。

5 个答案:

答案 0 :(得分:17)

这是一个解决方案。选择标签视图并转到尺寸检查器。在标签首选项下,选中显式大小框。这样可以防止堆叠视图在将多行标签放入其中时折叠。

答案 1 :(得分:5)

设置尺寸检查器&gt; <内在尺寸>占位符,将宽度设置为无,高度设置为30

来自说明:设置设计时内在内容大小仅影响在Interface Builder中编辑时的视图。视图在运行时不会具有此内在内容。

来自Xcode帮助:使用占位符内在大小来指示视图的宽度和高度,并避免设计时约束模糊。

答案 2 :(得分:1)

这是Xcode 9中的一个错误 - 请参阅https://github.com/lionheart/openradar-mirror/issues/18779。它似乎只影响在Xcode中绘制画布的方式:至少对我来说,我的应用程序仍然可以正确构建。我从9.0升级到9.0.1之后第一次看到它,Xcode 9.1仍然有bug。我降级到9.0,这似乎没有这个错误。

这已被报告为Apple的Bug Reporter(bugreport.apple.com)上的错误30484038 - 我报告了类似的错误,他们回复说它是30484038的副本。该错误仍然标记为“打开”。我已经问过是否有解决方法或预期的时间,直到它被修复,但他们还没有答复回答。

我会尝试为影响UILabels设置一个明确的大小,看看它是否可以作为一种解决方法。

更新:此错误似乎在Xcode 9.3中得到修复。就我而言,当line属性设置为0时,Xcode现在可以正确地绘制标签。另外,在9.3的发行说明中,我在Interface Builder下找到了这个,已解决的问题:

  

堆栈视图中的工具栏或多行标签不再导致画布上的“自动布局”错位。此问题导致诸如零宽度多行标签之类的问题,或者在设备栏中选择iPhone X时出现超高工具栏等问题。 (35377301)

答案 3 :(得分:0)

在xib中,只需为标签设置临时高度约束(如100),然后将其删除即可。它将显示您刚设置的高度(仅显示高度,而不是实际高度)。

答案 4 :(得分:-1)

我认为这是因为你的文字标签太长了。

numberOfLines docs

  

此属性控制要使用的最大行数   将标签的文本放入其边界矩形中。默认值   对于此属性是1. 删除任何最大限​​制,并使用尽可能多的   根据需要设置行,将此属性的值设置为0

根据您的约束条件,您的标签不适合堆叠视图。我建议你把你的大UILabel分成小块。