如何使用UIPageViewController来显示上一个和下一个视图的一部分

我用这个惊人的教程如何在Swift中使用UIPageViewController在我的应用程序中理解和实现一个UIPageViewController。

我已经成功地完成了整合,但是现在我需要修改一下这个行为。

我不想一次只查看一个彩色视图,而想查看以前视图的25%和下一个视图的25%。

在这里输入图像说明

我想我必须使用这个方法传递3个视图控制器:

func setViewControllers(_ viewControllers: [UIViewController]?, direction: UIPageViewControllerNavigationDirection, animated: Bool, completion: ((Bool) -> Void)? = nil) 

…但我不知道该怎么办

当你使用scrollview创buildUIPageviewcontroller时,很容易实现。 是的,你可以使用UIScrollView来显示它像pageviewcontroller。 现在显示矩形(在你当前的屏幕+第二个屏幕的25%)在你手中。

下面是这个代码。

  import UIKit class ViewController: UIViewController,UIScrollViewDelegate { let scrollView = UIScrollView(frame: CGRectMake(0, 0, 320, 300)) var colors:[UIColor] = [UIColor.redColor(), UIColor.blueColor(), UIColor.greenColor(), UIColor.yellowColor()] var frame: CGRect = CGRectMake(0, 0, 0, 0) var pageControl : UIPageControl = UIPageControl(frame: CGRectMake(50, 300, 200, 50)) override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. configurePageControl() scrollView.delegate = self self.view.addSubview(scrollView) for index in 0..<4 { frame.origin.x = self.scrollView.frame.size.width * CGFloat(index) frame.size = self.scrollView.frame.size self.scrollView.pagingEnabled = true var subView = UIView(frame: frame) subView.backgroundColor = colors[index] self.scrollView .addSubview(subView) } self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * 4, self.scrollView.frame.size.height) pageControl.addTarget(self, action: Selector("changePage:"), forControlEvents: UIControlEvents.ValueChanged) } func configurePageControl() { // The total number of pages that are available is based on how many available colors we have. self.pageControl.numberOfPages = colors.count self.pageControl.currentPage = 0 self.pageControl.tintColor = UIColor.redColor() self.pageControl.pageIndicatorTintColor = UIColor.blackColor() self.pageControl.currentPageIndicatorTintColor = UIColor.greenColor() self.view.addSubview(pageControl) } // MARK : TO CHANGE WHILE CLICKING ON PAGE CONTROL func changePage(sender: AnyObject) -> () { let x = CGFloat(pageControl.currentPage) * scrollView.frame.size.width scrollView.setContentOffset(CGPointMake(x, 0), animated: true) } func scrollViewDidEndDecelerating(scrollView: UIScrollView) { let pageNumber = round(scrollView.contentOffset.x / scrollView.frame.size.width) pageControl.currentPage = Int(pageNumber) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } 

这是一个很好的教程来帮助你。 带有滚动视图的自定义PageView控制器