UIView 不会在 UIScrollView 内垂直滚动

Posted

技术标签:

【中文标题】UIView 不会在 UIScrollView 内垂直滚动【英文标题】:UIView doesn't scroll inside UIScrollView in vertical 【发布时间】:2015-07-05 15:52:37 【问题描述】:

我有UIViewController。它有一个UIView,在UIScrollView 内部有三个对象(UILabelUIImageViewUITextView)。当我尝试垂直滚动时,没有任何反应。我使用自动布局。之前我没有在UIScrollView 中没有UIView,但底部有一个空白空间。

@IBOutlet weak var scrollView: UIScrollView! 
    didSet 
        scrollView.delegate = self
        scrollView.scrollEnabled = true
        self.scrollView.frame.size = scrollView.contentSize //12
    

【问题讨论】:

scrollView.contentSize 的值是多少...为什么要垂直滚动? @jdi If I make self.scrollView.contentSize = CGSizeMake(self.viewV.frame.width, self.view.frame.height) 我得到错误 fatal error: unexpectedly found nil while unwrapping an Optional value 尝试自己设置值看看:scrollView.frame.size.height = 800。它会扩展它吗? @jdi 不,它对我不起作用 【参考方案1】:

如果您使用自动布局,则无需设置滚动视图的框架,请提供您的视图,它是滚动视图高度约束的子视图,例如800并设置滚动视图和外部视图宽度约束以匹配每个设备的宽度并使用自动布局设置滚动视图框架,这将开始滚动。

更多详情请参考link

【讨论】:

对不起。这是我的错误。我修好了它,它对我来说很好。谢谢你的回答! @Alexsander 你的错误是什么你能告诉我......因为我有同样的问题 @OsamaBinBashir 你好!我不记得确切,但就像我做了以下事情。您需要将 contentSize 分配给 scrollView。另外,如果我现在正在做,那么我可能用 UITableView 制作了这个控制器。请告诉我它是否对您有帮助? @OsamaBinBashir 例如 yourScrollView.contentSize = CGSizeMake(375, 1000) 也请查看***.com/questions/33715402/… 和***.com/questions/39772422/…【参考方案2】:

问题在于您将滚动视图的框架大小设置为等于滚动视图的内容大小。滚动视图仅在其内容大于其框架时才会滚动。相反,设置滚动视图的框架大小以匹配容器视图的大小,并将内容大小的高度设置为文本视图的底部。

【讨论】:

【参考方案3】:

当我们使用带有自动布局的滚动视图时,它有点令人困惑,但如果您看到滚动视图的行为,那么您将很容易了解它。

对于滚动视图,将四个边的约束设置为 0。 然后检查您查看的大小(您在滚动视图中添加的)并将其设置为滚动视图内容大小。 对于视图设置与滚动视图宽度相等的权重约束。

希望对你有帮助。

【讨论】:

以上是关于UIView 不会在 UIScrollView 内垂直滚动的主要内容,如果未能解决你的问题,请参考以下文章

调整 UIView 的大小以便 UIScrollView 工作

在 UIScrollView/UIView 内设置 UITableViewCell 样式

在 UIView (XIB) 和滚动视图之上的 UIScrollView 不会滚动

在 ViewController 之外的 UIScrollView 内绘制/布置宽 UIView 的内容

UIScrollView 不会在 UIView 中显示

UIScrollView的不会滚动!