无法将UIContainerView添加到UIScrollView

时间:2017-06-29 11:08:56

标签: ios swift uiscrollview

我在故事板中添加了UIScrollView,引用为:

@IBOutlet weak private var myScrollView: UIScrollView!

我想添加一个UIViewController,所以需要一个containerview。

在第一个实例中,我将添加一个带有黑色背景的简单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中滚动新视图

任何人都可以帮助我克服这个最初的障碍吗?

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:1)

您的代码对我来说很好。这是我自己运行时的样子。

enter image description here

回答您的问题

  1. 将滚动视图的背景设置为另一种颜色,就像我正在做的那样。然后你可以弄清楚出了什么问题。您必须将容器视图添加到滚动视图,而不是self.view,这是视图控制器。如果添加到self.View,容器视图将固定到视图控制器,并且不会滚动滚动视图。它将覆盖滚动视图

  2. 如果滚动视图的内容大小小于视图大小,则无法滚动。也就是说,它默认太短而不能滚动。所以只需通过此代码使其更高

    scrollView.contentSize = CGSize(width: scrollView.contentSize.width, height: 2000)