带位置约束的多行标签
Multilined Label broken with position constraint
在我的应用程序页面中,我想在底栏顶部添加标签文本。
我通过添加以下约束成功了:
BottomBarImage.top = Label.bottom + 24
问题是标签计划显示 2-3 行文本。
我在模拟器上测试过,结果只显示一行。
重要说明:通过取消约束,Label 中的行显示正确(但是 Label 的位置当然是错误的)
我们如何解决多行问题?
谢谢
问题是你的约束不够
一个不在自动布局下的标签就在那里,惰性的;在布局时,它的大小是你在情节提要中给它的大小。
但是只要你给它添加约束,标签就会自动布局。这改变了一切。自动布局下的标签是 self-sizing:它会自动适应其内容的大小。它会自动适应必要的高度,但前提是它的宽度是固定的(这样它就知道什么时候换行)。你没有给这个标签任何 width 约束,也没有给它一个 preferredMaxLayoutWidth
,所以自动布局引擎不知道如何做。
因此,要解决此问题,请为您的标签添加宽度限制或给它一个 preferredMaxLayoutWidth
。或者,如果您知道两个维度,则同时给它一个宽度约束和一个高度约束。 (并确保 numberOfLines
已更改为 0
;默认值为 1
,这只是一行。)
在我的应用程序页面中,我想在底栏顶部添加标签文本。
我通过添加以下约束成功了:
BottomBarImage.top = Label.bottom + 24
问题是标签计划显示 2-3 行文本。 我在模拟器上测试过,结果只显示一行。
重要说明:通过取消约束,Label 中的行显示正确(但是 Label 的位置当然是错误的)
我们如何解决多行问题?
谢谢
问题是你的约束不够
一个不在自动布局下的标签就在那里,惰性的;在布局时,它的大小是你在情节提要中给它的大小。
但是只要你给它添加约束,标签就会自动布局。这改变了一切。自动布局下的标签是 self-sizing:它会自动适应其内容的大小。它会自动适应必要的高度,但前提是它的宽度是固定的(这样它就知道什么时候换行)。你没有给这个标签任何 width 约束,也没有给它一个 preferredMaxLayoutWidth
,所以自动布局引擎不知道如何做。
因此,要解决此问题,请为您的标签添加宽度限制或给它一个 preferredMaxLayoutWidth
。或者,如果您知道两个维度,则同时给它一个宽度约束和一个高度约束。 (并确保 numberOfLines
已更改为 0
;默认值为 1
,这只是一行。)