无法将 UIContainerView 添加到 UIScrollView
Posted
技术标签:
【中文标题】无法将 UIContainerView 添加到 UIScrollView【英文标题】:Can't add UIContainerView to UIScrollView 【发布时间】:2017-06-29 11:08:55 【问题描述】:我在故事板中添加了一个 UIScrollView,引用为:
@IBOutlet weak private var myScrollView: UIScrollView!
我想添加一个 UIViewController 所以需要一个容器视图。
在第一个实例中,我会添加一个带有黑色背景的简单 UIView(以查看它),因此将其添加到 ViewDidLoad:
let containerView = UIView()
containerView.frame = CGRect(x: 50, y: 150, width: 200, height: 200)
containerView.backgroundColor = UIColor.black
myScrollView.addSubview(containerView)
然后……什么都没有。
四处寻找我发现可以使用的解决方案
self.view.addSubview(myScrollView)
但是 1. myScrollView 肯定已经添加到视图中了吗? 和 2. 我无法在 myScrollView 中滚动新视图
谁能帮我克服这个最初的障碍?
【问题讨论】:
【参考方案1】:为了滚动内容大小必须大于框架大小。
// If the scroll view is not showing, check its frame
scrollView.frame = CGRect(x: 0, y: 318, width: 375, height: 248)
// Content size must be greater than frame size
scrollView.contentSize = CGSize(width: 400, height: 500)
let containerView = UIView()
containerView.frame = CGRect(x: 50, y: 150, width: 200, height: 200)
containerView.backgroundColor = UIColor.black
scrollView.addSubview(containerView)
【讨论】:
【参考方案2】:您的代码对我来说看起来不错。这是我自己运行时的样子。
回答您的问题
将滚动视图的背景设置为另一种颜色,就像我正在做的那样。然后你就可以弄清楚出了什么问题。您必须将容器视图添加到滚动视图,而不是 self.view
,它是视图控制器。如果您添加到self.View
,您的容器视图将被固定到您的视图控制器,并且不会随着滚动视图滚动。它会覆盖滚动视图
如果内容大小小于视图大小,则滚动视图无法滚动。也就是说,默认情况下它太短而无法滚动。因此,只需通过此代码使其更高
scrollView.contentSize = CGSize(width: scrollView.contentSize.width, height: 2000)
【讨论】:
以上是关于无法将 UIContainerView 添加到 UIScrollView的主要内容,如果未能解决你的问题,请参考以下文章
在 UIViewController 中嵌入 UIContainerView 作为屏幕的一部分
UIContainerView 内容高度(内嵌 UITableViewController)
UIContainerView 中的 ChildViewController 在初始加载时高度错误
带有嵌入式 UITableViewController 的 UIContainerView 在 Xcode 5 (SDK 7) 上有灰色背景