将UIScrollView安装到UIView

时间:2016-01-12 23:48:47

标签: ios swift uiview uiscrollview

我正在尝试使用UIScrollView来显示一系列UIViews。在我的故事板中,我有一个View Controller,其中包含一个使用AutoLayout约束的UIView。

查看控制器(灰色的UIView)

enter image description here

为了调用UIScrollView,我使用以下方法:

func initScrollview() {

    self.mainScrollView = UIScrollView(frame: self.mainView.bounds)
    self.mainScrollView!.contentSize = CGSizeMake((self.mainView.bounds.width)*CGFloat(3), self.mainView.frame.height)
    self.mainScrollView!.backgroundColor = UIColor.greenColor() // For visualization of the UIScrollView
    self.mainScrollView!.pagingEnabled = true
    self.mainScrollView!.maximumZoomScale = 1.0
    self.mainScrollView!.minimumZoomScale = 1.0
    self.mainScrollView!.bounces = false
    self.mainScrollView!.showsHorizontalScrollIndicator = true;
    self.mainScrollView!.showsVerticalScrollIndicator = false;
    self.mainScrollView!.delegate = self

    for i in 0...3 {

        var tempView = SubView(frame: self.mainView.bounds)

        pages.insert(tempView, atIndex: i)
        self.mainScrollView!.addSubview(pages[i]);
    }

    self.mainScrollView!.scrollRectToVisible(CGRectMake(mainScrollView!.frame.size.width, 0, mainScrollView!.frame.size.width, mainScrollView!.frame.size.height), animated: false)
}

当我运行我的代码时,UIScrollView不适合UIView。相反,它太短而且太宽。结果如下:

UIView为灰色,UIScrollView为绿色

enter image description here

我做错了什么导致UIScrollView的大小不正确?

3 个答案:

答案 0 :(得分:0)

在上面的代码中,没有提到将mainScrollView添加到mainVew。

你在哪个视图中添加mainScrollView?我的意见是你试图将它添加到self.view,而它应该是 self.mainView

调用initScrollView()函数后,尝试添加以下代码

a

答案 1 :(得分:0)

如果您将所有这些视图直接放在故事板中而不是以编程方式放置,这可能会更容易。我在代码中看不到任何无法在IB中直观完成的内容。此外,如果您在故事板中激活了autoLayout,则在代码中设置框架和大小将无法正常工作。 (自动布局将在下一次通过时更改您的值)

答案 2 :(得分:0)

您应该将您初始化UI元素大小的代码放在UIView的屏幕大小(UIViewController的{​​{1}})上。因为在viewDidLayoutSubviews中,屏幕尚未调整其大小,