手动添加项目后,无法滚动到UIScrollView的底部以查看

时间:2018-01-11 14:11:32

标签: ios swift uiscrollview

在追加带有元素的最后一个视图(在滚动视图内)后,滚动视图高度不会改变,因此我无法滚动到内容的底部

我完成的步骤:

  1. 添加了UIScrollView视图,将top,right,bottom和left对齐设置为0
  2. 添加了UIView,将顶部,右侧,底部和左侧对齐设置为0
  3. 从视图 内部滚动视图:设置与主要相等的宽度和相等的高度 视图(包含滚动视图的视图)
  4. 对于First View添加的约束: 容器视图的顶部约束:20。左约束:8。右
    约束:8。底部约束:标准。身高:320
  5. 对于Second View添加的约束:对容器视图的Top Constraint:Standard。左约束:8。右约束:8。底部约束:标准
  6. 所以看起来像:

    enter image description here

    在此之后,我手动添加标签以持续查看:

    class SecondViewController: UIViewController {
    
        @IBOutlet weak var testView: UIView!
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            var yPos = 20
            for i in 0...20 {
                let testLabel = UILabel(frame: CGRect(x: 0, y: yPos, width: 200, height: 20))
                testLabel.text = "test \(i)"
                testLabel.font = UIFont(name: "Arial", size: 11)
    
                testView.addSubview(testLabel)
                yPos += 20
            }
        }
    }
    

    enter image description here

    如您所见,我只能看到标签1-9,因为无法滚动到底部,所以无法看到休息

    这是问题,因为我将自动布局与以编程方式添加的标签混合到View中?我如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

您的上一个问题/观点是正确的,如果您在故事板中使用自动布局,则应使用自动布局。

幸运的是,UIStackView适用于自动布局,因此如果您将黄色视图更改为UIStackView并在代码中设置出口,则可以添加视图:

stackView.addArrangedSubview(sensorLabel)

简要解释为什么它不会让你滚动而不更新自动布局:

您的黄色视图固定在其中的标签上,黄色视图的底部也固定在故事板中滚动视图的底部。

除非您增加黄色视图的大小(通过更改固定黄色视图底部的标签),滚动视图内容大小也不会因为它固定在底部而改变黄色的视图。堆栈视图将为您完成大部分工作,因此您只需将堆栈视图的底部固定到Storyboard中滚动视图的底部。

答案 1 :(得分:0)

问题是你设置它的高度约束固定读取步骤3尝试删除它并将最后一个标签底部约束挂钩到scrollview的内容视图