提前抱歉,这是一个很长的问题,但我想尽可能好地解释。
我需要为项目实施演练(第一次启动指南),该指南仅在用户首次启动应用时向用户显示。
我已经通过创建一个.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以带有黑色背景的视图开始,当我向右翻页时,应该会出现带蓝色背景的视图。
当我运行时,我看到的只是蓝色视图,我无法进行任何分页或滚动。