2016-12-22 3 views
5

この驚くべきチュートリアルHow to Use UIPageViewController in Swiftを使用して、アプリケーションでUIPageViewControllerを理解し実装しました。UIPageViewControllerを使用して前のビューと次のビューの一部を表示する方法

私は正常に統合を完了しましたが、私は今少し動作を変更する必要があります。

一度に1つのカラービューのみを表示する代わりに、前のビューの25%と次のビューの25%を表示したいと思います。 、

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

...しかし、私はそれは容易に達成可能だ行う方法

答えて

0

知らない:私は3 viewcontrollersを渡し、このメソッドを使用するために持っていると思う

enter image description here

scrollviewでUIPageviewcontrollerを作成しました。はい、UIScrollViewを使用して、pageviewcontrollerのように表示できます。今度は表示矩形(あなたの場合は現在の画面+ 2番目の画面の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. 
    } 
} 

ここではあなたを助ける素晴らしいチュートリアルです。 Custom PageView Controller with scrollview

+0

したがって、代わりにUIPageViewControllerを使用するのではなく、カップルUIViewController/UIScrollViewDelegateを使用するのが最善の解決策ですか? – cmii

関連する問題