为什么UIScrollView不能垂直滚动(使用自动布局)?

时间:2015-10-20 17:22:36

标签: ios objective-c uiscrollview autolayout

Screenshot

我的视图层次结构是

UIView

       UIScrollView

           UIView1

               -->UIView1.1

               -->UILabel

               -->UILabel

               -->UILabel

               -->UILabel  (bottom)

我正在使用Autolayout。我已经尝试了所有的方法,并搜索了很多。我确实将底部UILabel连接到UIView1的底部布局,并将其优先级设置为750(最低的)。我几乎已经尝试了在这个论坛上和所有地方所说的一切,因为每个人都在说同样的事情。

我也在UIView1.1中动态添加一个视图。 我不知道为什么这不起作用。 Scrollview无法正确滚动。 请帮我。我被困在这3天了。

3 个答案:

答案 0 :(得分:11)

使这项工作实际上非常简单。您不需要将所有标签放入额外的视图中。而且您不必自己设置contentSize。自动布局将为您完成此操作。

您必须确保拥有以下内容:

  1. 每个标签和标签顶部的视图都必须有 设置为滚动视图宽度的宽度约束和值为0的约束(或者您可能要添加的任何填充)
  2. 顶部视图需要值<0>的顶部约束
  3. 底部标签需要值<0>的底部约束
  4. 就是这样!

    这是一个显示约束的草图:

    enter image description here

    如果您在自动布局中使用 Masonry SnapKit ,则会在代码中添加这些约束:

    topView.snp_makeConstraints { (make) -> Void in
        make.top.equalTo(0)
        make.left.equalTo(0)
        make.width.equalTo(scrollView)
    }
    label1.snp_makeConstraints { (make) -> Void in
        make.top.equalTo(topView.snp_bottom)
        make.left.equalTo(0)
        make.width.equalTo(scrollView)
    }
    label2.snp_makeConstraints { (make) -> Void in
       make.top.equalTo(label1.snp_bottom)
       make.left.equalTo(0)
       make.width.equalTo(scrollView)
    }
    label3.snp_makeConstraints { (make) -> Void in
        make.top.equalTo(label2.snp_bottom)
        make.left.equalTo(0)
        make.width.equalTo(scrollView)
        make.bottom.equalTo(0)
    }
    

答案 1 :(得分:5)

ReportsJPanel

最后这些线条救了我。

答案 2 :(得分:0)

工作尝试了。

如果你没有使用autolayout,那么只把它放在 viewDidLoad ():

[_mainScroll setContentSize:CGSizeMake(320, 2000)];

或者如果您使用的是自动布局,请按照以下步骤操作:

首先给出scrollview top,bottom,leading和trailing的约束。现在再看一个视图并给出与之前给出的scrollview相同的约束。

不要忘记为该视图修复高度和宽度等于主父视图提供额外约束。

请注意这一点。

https://www.youtube.com/watch?v=rjTS9fyWqdg