将动态高度设置为UIScrollView Swift

时间:2016-12-03 06:35:39

标签: ios uiscrollview swift2 height

如何根据我 ScrollView

中的内容/子视图设置 UIScrollView 的动态高度

以下是我得到的输出结果:

enter image description here

5 个答案:

答案 0 :(得分:7)

我们可以使用自动布局,我们在scrollview中使用内容视图,可以将其固定到scrollview,并且给出的高度和宽度约束等于主视图。然后,如果我们希望高度动态变化,我们可以将高度约束与其他高度约束相比较低,因此内容视图的高度将根据其内在大小而增加,因为它的子视图。

参考链接:

1)https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/WorkingwithScrollViews.html#//apple_ref/doc/uid/TP40010853-CH24-SW1

2)https://www.youtube.com/watch?v=6J22gHORk2I

答案 1 :(得分:1)

对我而言,这个技巧奏效了(Swift 4)

scrollView.layoutIfNeeded()
scrollView.isScrollEnabled = true
scrollView.contentSize = CGSize(width: self.view.frame.width, height: scrollView.frame.size.height)

答案 2 :(得分:0)

您必须计算内容所需的高度,包括间距。 将该值指定为行的高度并刷新表(或其中包含行的部分)

答案 3 :(得分:0)

就我而言,我必须使用textViews(和其他视图)构建一个scrollView,并且必须动态调整大小。
在InterfaceBuilder中,我设置了最小约束。高度和固定高度。然后在构建时删除固定的高度。
一切正常。

enter image description here

enter image description here

答案 4 :(得分:0)

垂直滚动视图根据其标签文本的长度调整大小的示例:

    let scrollView = UIScrollView()
    
    view.addSubview(scrollView)
    scrollView.translatesAutoresizingMaskIntoConstraints = false

    scrollView.heightAnchor.constraint(lessThanOrEqualToConstant: UIScreen.main.bounds.height / 2).isActive = true

    let bodyLabel = UILabel()

    scrollView.addSubview(bodyLabel)
    bodyLabel.translatesAutoresizingMaskIntoConstraints = false

    bodyLabel.topAnchor.constraint(equalTo: scrollView.topAnchor).isActive = true
    bodyLabel.leadingAnchor.constraint(equalTo: scrollView.leadingAnchor).isActive = true
    bodyLabel.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor).isActive = true
    bodyLabel.trailingAnchor.constraint(equalTo: scrollView.trailingAnchor).isActive = true
    bodyLabel.widthAnchor.constraint(equalTo: scrollView.widthAnchor).isActive = true

    let heightConstraint = bodyLabel.heightAnchor.constraint(equalTo: scrollView.heightAnchor)
    heightConstraint.priority = .defaultLow
    heightConstraint.isActive = true