Setting Dynamic Height to UIScrollView Swift

2020-07-06 06:51发布

how can i set the dynamic height of UIScrollView based on the content/ subviews i have in my ScrollView

Here is what i am getting as output:

enter image description here

4条回答
Rolldiameter
2楼-- · 2020-07-06 07:15

First you need set a subview height constraint of 0, then calculate data height (which you want to set in subview), and simply assign subview.heightConstraint.constant = data.height, then you need to set scrollView.contentsize which is based on subview height:

self.scrollView.contentSize = CGSize(width: self.scrollView.contentSize.width, height: self.subViewHeight.constant)
查看更多
三岁会撩人
3楼-- · 2020-07-06 07:20

for me this this trick worked (Swift 4)

scrollView.layoutIfNeeded()
scrollView.isScrollEnabled = true
scrollView.contentSize = CGSize(width: self.view.frame.width, height: scrollView.frame.size.height)
查看更多
Lonely孤独者°
4楼-- · 2020-07-06 07:21

You have to calculate the needed height for your content including spacing. Assign that value as the height of the row and refresh the table (or part in it with the row)

查看更多
▲ chillily
5楼-- · 2020-07-06 07:27

We can use auto layout, where we use a content view in scrollview, which can be pinned to the scrollview and the height and width constraints given equal to the main view. Then if we want the height to vary dynamically we can give height constraint a low priority compared to the others and hence the content view's height will increase based on its intrinsic size, because of its sub views.

Reference Links:

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

查看更多
登录 后发表回答