UIScrollView中的动态高度UILabel

时间:2017-05-26 00:17:25

标签: ios uiscrollview uistoryboard nslayoutconstraint

我一直在努力实现这个设计3天,但我尝试的一切都失败了。 enter image description here

这就是我的布局。

  • 蓝色部分是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
  • 中每个标签的约束
  • UIView中的UITableView,视图有一个固定的高度,表也是0 0 0 0。
  • 按钮5顶部,左侧5个,右侧5个。然后,我将容器UIView(包含所有这些项目)与按钮的下边缘对齐,如本文的顶部答案所示:UIView with dynamic height multiple UILabel

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

我不允许使用UIStackView,因为我们的目标是iOS 8。

我现在面临的两个明显问题是:

  1. 当我运行应用程序时,滚动不执行任何操作。
  2. 我在故事板中得到的唯一警告是: enter image description here

1 个答案:

答案 0 :(得分:3)

好的,我最终设法做到了。

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

粗略的每个UILabel元素都被固定在左上方,这使得它们都是动态的。

您可以选择使用以下UIViews(无论是为了给它们提供静态高度还是动态)。

至于底部的UIButton,我用它做了同样的事情。我控制从包含UIView(它嵌套在UIScrollView中并在此处包含所有内容)中拖动到UIButton,我选择了#34; Bottom Spacing to Container"这将允许包含视图根据UIButton所在的位置调整其高度,这取决于动态标签推动其视图高度时移动的距离,并依次推动UIButton这是有道理的。

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

我希望这很有用。