使用ScrollView直接使用故事板进行分页而不是创建.xib文件

时间:2018-06-06 17:28:34

标签: ios swift uiscrollview storyboard paging

提前抱歉,这是一个很长的问题,但我想尽可能好地解释。

我需要为项目实施演练(第一次启动指南),该指南仅在用户首次启动应用时向用户显示。

我已经通过创建一个.xib文件来实现它,我只是通过创建引用.xib模型的对象为我需要为演练实现的每个项目创建一个视图。

但是现在我需要在不使用.xib文件的情况下实现它,我需要通过storyboard来实现它。这次我插入了一个scrollView,然后我在其中放入了另一个视图,其中包含我需要的对象,如(标签,图像视图,按钮等)但是它不起作用,即使我可以创建所有通过复制scrollView下的视图来对象。当我尝试使用创建的所有视图扩展scrollView的宽度以便我可以进行分页时,它不会创建彼此相邻的每个视图,而只显示模拟器中的最后一个对象(视图),因为它们垂直相加,我不能不做分页。

现在我提供一些示例代码来说明我是如何尝试实现的:

import UIKit

class DenemeViewController: UIViewController, UIScrollViewDelegate {

@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var pageControl: UIPageControl!

@IBOutlet weak var repeatingView: UIView!

var viewArray = [UIView]()

override func viewDidLoad() {
    super.viewDidLoad()

    let temporaryView = repeatingView
    temporaryView?.backgroundColor = .black
    viewArray.append(temporaryView!)

    let temporaryViewTwo = repeatingView
    temporaryViewTwo?.backgroundColor = .blue
    viewArray.append(temporaryViewTwo!)

    pageControl.numberOfPages = viewArray.count
    pageControl.currentPage = 0
    view.bringSubview(toFront: pageControl)

    setupScrollView(items: viewArray)
}

func setupScrollView(items: [UIView]) {
    scrollView.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height)
    scrollView.contentSize = CGSize(width: view.frame.width * CGFloat(items.count), height: view.frame.height)
    scrollView.isPagingEnabled = true

    for i in 0..<items.count {
        items[i].frame = CGRect(x: view.frame.width * CGFloat(i), y: 0, width: view.frame.width, height: view.frame.height)
        scrollView.addSubview(items[i])
    }
}

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    let pageIndex = round(scrollView.contentOffset.x/view.frame.width)
    pageControl.currentPage = Int(pageIndex)
}
}

正如您所看到的,我首先在viewDidLoad中创建两个不同的视图,方法是引用“repeatingView”,它是故事板上scrollView内部视图的出口。然后我将它们返回到一个数组中,并尝试使用视图实现scrollView的子视图。

我期待看到scrollView以带有黑色背景的视图开始,当我向右翻页时,应该会出现带蓝色背景的视图。

当我运行时,我看到的只是蓝色视图,我无法进行任何分页或滚动。

Storyboard Hierarchy

0 个答案:

没有答案