2017-02-16 30 views
1

我正在构建包含测验的iOS应用程序。问题显示在屏幕的上部(见下文)。总有五个可能的答案。问题是:答案是程序化生成的,并且长度有所不同,有时会导致标签中出现断行。Xcode:将不同高度的UILabels约束为固定大小的容器

This is the current state

也许很难从图片告诉我们,但第一和第二,然后在第二和第三之间的间距是不一样的,因为我打算的那样。

This is what I had in mind

从本质上讲,我想了收入和最底部的标签有向容器相同的空间。中间的标签之间应该有相同的间距,但也应该适应,如果其中一个标签变大(当文本的大小比宽度更大并且出现换行符时)。

要做到这一点,我试过如下:

  • 整理标签的堆栈视图:

    近的工作,我就是这里唯一的问题,即 标签的大小是在显示堆栈视图后计算的,这会导致在运行时将错误的约束/填充/边距应用于(可能)更长的文本。

  • 组织的标签与普通约束

    我尝试设置的约束 优先级,中间标签低于 的顶和最底层的人,所以这些将是那些 来调整,如果标签放大,但看起来在 运行时间中,其中一个选择缩小,而其他 保持其默认大小。

我会很感激,如果你能帮助我,约束似乎总是在我的脖子上一疼......

+0

每个答案都在为UITextField?还是UILabel?你想/需要的字体大小来调整? – DonMag

+0

他们是UILabels,将改变我的问题,谢谢!字体大小应该在所有答案中保持不变。 – lukelle

+0

好的 - 我添加了一个带有示例链接的答案。 – DonMag

回答

0

同意...我认为UIStackView工作正常,只需要正确设置它。

此外,您可能需要在设置文本时在标签上调用.sizeToFit。

我提出了一个例子,你 - 定径是不准确的,但你应该能够跟随技术...

https://github.com/DonMag/StackViewFun

+0

您值得拥有一枚奖章!像魅力一样工作,非常感谢将本教程放在一起,非常出色! :) – lukelle

0

我觉得你的情况最好的做法确实是使用UIStackView。然后,你必须解决这个问题的多个选项:

  1. 您可以将UIStackView的分布设置为Fill Proportionally并设置Minimum Font SizeMinimum Font ScaleUILabels
  2. 您也可以将UIStackView的分布设置为Fill,然后手动指定容器的高度。 UILabels应该仍然有一些Minimum Font SizeMinimum Font Scale

编辑:

我才意识到你想保留的所有UILabels具有相同的字体大小。然后可能的解决方案将是,以嵌入UIStackViewUIScrollView和约束的UIStackView'sLeadingTrailingTopBottom约束到UIScrollView.ContentView的个以这种方式,UIScrollView的高度将根据所需要的高度的适应由UIStackView

希望这会帮助你!

相关问题