UIScrollView里面的动态高度UILabel

问题描述:

我一直试图达到这样的设计3天,但我试过的一切都失败了。 enter image description hereUIScrollView里面的动态高度UILabel

这是我的布局是如何。

  • 蓝色部分是一个UIScrollView,对主要 视图有0 0 0 0约束。
  • 在UIScrollView内部嵌套的是一个UIView,其中包含我所有的 内容,同时还具有对UIScrollView的0 0 0 0约束。我也 使UIView的宽度等于UIScrollView的宽度。
  • 然后我添加了从上到下的元素。图像很简单,10为内容视图的顶部边界,固定宽度和高度,并在容器中水平居中。
  • 配置文件名称标签与图像相同,但只有固定的高度。
  • 包含3个标签和2个动态高度标签的UIView。我给了UIView顶部,左侧和右侧的约束,并留下底部,以便动态高度标签能够在需要时推动视图的高度。 UILabels有0行设置。
  • 第二个UIView,0 0 0 0和5 5 5 5内部每个标签的约束条件
  • UITableView里面的UIView,视图有一个固定的高度,表也是0 0 0。
  • 按钮5顶部,左5,右5。然后,我将容器UIView(包含所有这些项目)与按钮的底部边缘对齐,如本文最常见的答案:UIView with dynamic height multiple UILabel

我还用这段视频作为参考,介绍如何实现UIScrollView,因为这是我第一次。 https://www.youtube.com/watch?v=VE6DQGy4iS8

我不允许使用UIStackView BEC我们针对iOS的8

的2个显而易见的问题,我现在所拥有的是:

  1. 当我运行应用程序,滚动什么也不做。
  2. 唯一的警告我在故事板得到是这样的: enter image description here
+0

我会确保您的所有用户界面的顶部和底部的引脚或一个或另一个固定的高度适当约束。具体而言,您应该能够将包含动态标签的UIView的底部固定到下一个UIView的顶部,以在两者之间具有固定间距,同时仍允许动态高度。 – zfetters

+0

我的意见是固定的,如你所说。什么确定了滚动视图的高度? – Tarek

+0

所以,你有你第一个UIView直接在你的滚动视图下固定0,0,0,0。里面是你的所有内容,所以一旦你添加了所有适当的约束,以确保一切都有它的宽度/高度占你的家长UIView将实际上扩大的规模,如果它的内容增长(通过你的动态高度标签),这反过来会增加你的UIScrollView的contentView大小。最重要的是你对内容的限制是正确的,你应该很乐意去。 – zfetters

好吧,我设法在年底做。

我所做的就是将具有动态UILabels的UIView固定到顶部,左侧和右侧。 因为它的高度,我控制它从它拖到它自己内部的最后一个项目,这是照片中的第二个动态高度UILabel。我控制拖动并设置UIView,并选择具有动态高度的UILabel的“Bottom Spacing to Container”。这样UILabel就可以控制UIScrollView需要的UIView最终高度来找出它自己的高度。

粗糙的每个UILabel元素被固定在右上角,只允许它们全部动态。

你对下面的UIViews(无论你想给他们一个静态的高度还是动态的)做什么是你的选择。

至于底部的UIButton,我对它做了同样的事情。我控制从包含UIView(这是嵌套在UIScrollView中,并包含一切在这里)拖到UIButton,我选择了“底部间距到容器”,并将其设置为5.这将允许包含视图调整其高度取决于UIButton的位置取决于它在动态标签推动其视图高度时移动了多少距离,并反过来推动UIButton(如果有意义的话)。

总之,在典型的场景中,您通常会将视图中的最后一个元素固定到包含视图的左下角和右下角。但是,为了允许动态更改,您可以反转约束的2个项目。

我希望这是有用的。