如何正确设置 UIScrollView 高度

Posted

技术标签:

【中文标题】如何正确设置 UIScrollView 高度【英文标题】:How to set UIScrollView height correctly 【发布时间】:2015-04-25 20:19:24 【问题描述】:

我无法让我的UIScrollView 以我期望的方式滚动。我希望它是 1,200 点高,我已经设法让它滚动到这个高度,但是我遇到了一些问题。

首先,内容从屏幕下方开始。看起来它在导航栏下方向下滚动了 64 像素(导航栏的高度)。我怎样才能让它在导航栏的正下方开始?

另外,我在视图中有三个按钮在点击时不会调用它们的功能。我假设这是因为我在某种程度上犯了UIScrollView 的大小错误。如果我将它们移动到主框架内(屏幕大小),这些按钮就会起作用。

这是我的代码:

override func viewDidLoad() 
    super.viewDidLoad()

    scrollView.contentSize = CGSize(width: view.bounds.width, height: 1200)


override func viewDidLayoutSubviews() 
    super.viewDidLayoutSubviews()
    scrollView.frame = CGRect(x: 0, y: 0, width: view.bounds.width, height: view.frame.height)

更新:

我解决了按钮的问题。我忘记设置对象放置在UIScrollView 中的视图高度。但是,如果有人有任何想法,仍然没有解决起点的问题?

【问题讨论】:

【参考方案1】:

如果您在代码中放置断点,您会注意到 viewDidLayoutSubviews 被调用 after viewDidLoad。实际上,当您在 viewDidLoad 中设置 scrollView.contentSize 时,不会加载视图框架,因此 CGSize(width: view.bounds.width, height: 1200) 可能会将内容大小设置为 0, 1200 .

您希望将 contentSize 代码移动到 更新 scrollView 框架后,在 viewDidLayoutSubviews 方法内。

关于你问题的第一部分,你可能想看看 UIScrollView 的 contentInset 属性。

希望这会有所帮助!

【讨论】:

以上是关于如何正确设置 UIScrollView 高度的主要内容,如果未能解决你的问题,请参考以下文章

如何使用自动布局在 UIScrollView 中为视图高度设置动画?

如何将 UIScrollView 的“主要”内容设置为屏幕高度-“次要”内容“首屏”

如何使用情节提要和自动布局在 UIScrollView 中添加动态高度/空间元素? [复制]

UiScrollView 高度不正确(没有 AutoConstraint)

将动态高度设置为 UIScrollView Swift

UIScrollView ContentView动态高度约束