在将约束应用于 UIScrollView 时需要帮助
Posted
技术标签:
【中文标题】在将约束应用于 UIScrollView 时需要帮助【英文标题】:Need Help in applying constraints to UIScrollView 【发布时间】:2017-01-31 07:11:28 【问题描述】:我正在以编程方式添加子视图。 要求:添加额外视图时应启用滚动。 我应用的约束:
为了删除顶部的多余空格,我写了self.automaticallyAdjustsScrollViewInsets = false
还将内容大小设为self.scrollView.contentSize = CGSize(width: self.contentView.frame.width, height: self.contentView.frame.height*2)
但是当视图被加载时滚动被完全禁用。
请帮帮我
【问题讨论】:
打印出来的 contentSize 是多少? 打印出来的时候显示为(375.0,1334.0) 您是否在 IB 中检查过反弹和垂直反弹?并且还启用了滚动 在 viewWillLayoutSubviews 中设置内容大小 @jo3birdtalk ,这些都经过检查。他们只是弹跳而不是向上滚动。 【参考方案1】:当你使用自动布局时,你必须在viewcontroller方法中设置content size,你必须override下面的方法。
-(void)viewWillLayoutSubviews;
迅速
override func viewWillLayoutSubviews()
【讨论】:
【参考方案2】:尝试根据滚动内容视图底部子视图的(origin.y + 高度)设置内容视图高度。
【讨论】:
我很欣赏这个想法。我在哪里设置它? 在 contentview 中以编程方式添加子视图后。 当我使用自动布局时,明确分配高度是一种好习惯。而且它也不起作用。 当您以编程方式添加子视图时,您必须根据其中所有子视图的高度来更改内容视图的高度。因此,您可以使用自动布局以编程方式分配高度。【参考方案3】:您需要做的事情很少,请检查您是否已启用此功能。
-
反弹
垂直弹跳
启用滚动
如果启用这些仍然无法帮助滚动,请添加 ContentView
的高度约束。您必须将此约束作为IBOutlet
连接到您的视图控制器。
我相信您的数据是从服务器获取的,因此您的内容高度不明确。因此,在您打印问题中值(375.0,1334.0)
的contentSize
的位置,添加这行代码,之后您应该能够滚动。
YourHeightConstraint.constant = self.scrollView.contentSize.height
【讨论】:
以上是关于在将约束应用于 UIScrollView 时需要帮助的主要内容,如果未能解决你的问题,请参考以下文章
为啥在 UIScrollView 中放置视图时需要 6 个约束?
斯威夫特:我无法使自动布局约束适用于我的 UIScrollView
如何以编程方式增加具有约束的 UIScrollView 的高度?