swift2 将动态高度设置为UIScrollView Swift

1rhkuytd  于 2022-11-06  发布在  Swift
关注(0)|答案(8)|浏览(304)

如何根据滚动视图中的内容/子视图设置UIScrollView的动态高度
下面是我得到的输出:

4ngedf3f

4ngedf3f1#

我们可以使用自动布局,在滚动视图中使用内容视图,它可以固定在滚动视图上,高度和宽度约束与主视图相同。然后,如果我们希望高度动态变化,我们可以给高度约束一个较低的优先级,因此内容视图的高度将根据其固有的大小增加,因为它有子视图。
参考链接:

  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
axzmvihb

axzmvihb2#

首先,您需要设置子视图高度约束0,然后计算数据高度(您要在子视图中设置),并简单地分配subview.heightConstraint.constant = data.height,然后您需要设置基于子视图高度的scrollView.contentsize

self.scrollView.contentSize = CGSize(width: self.scrollView.contentSize.width, height: self.subViewHeight.constant)
lb3vh1jj

lb3vh1jj3#

对我来说,这一招奏效了(斯威夫特4)

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

mitkmikd4#

在我的例子中,我必须用textView(和其他视图)构建一个scrollView,它必须动态地调整大小。
在InterfaceBuilder中,我设置了最小高度和固定高度的约束。然后在构建时删除固定高度。
这是按预期工作的。

mgdq6dx1

mgdq6dx15#

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

watbbzwu

watbbzwu6#

垂直滚动视图调整标签文本长度的示例:

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
hsgswve4

hsgswve47#

将滚动视图的子视图的等宽和等高约束设置为主视图。在IB大小检查器中,将等高约束-优先级设置为低(250)x1c 0d1x

gfttwv5a

gfttwv5a8#

我喜欢将内容布局指南的heightAnchorUIScrollView本身约束在一起:

scrollView.heightAnchor.constraint(equalTo: scrollView.contentLayoutGuide.heightAnchor).isActive = true

相关问题