2016-12-22 3 views
5

이 놀라운 자습서 How to Use UIPageViewController in Swift을 사용하여 내 응용 프로그램에서 UIPageViewController를 이해하고 구현했습니다.UIPageViewController를 사용하여 이전 및 다음보기의 일부도 표시하는 방법

통합을 성공적으로 완료했지만 지금 동작을 약간 수정해야합니다.

한 번에 하나의 컬러보기 만 보는 대신 이전보기의 25 %와 다음보기의 25 %를보고 싶습니다.

enter image description here

은 내가 3 viewcontrollers 전달이 방법을 사용한다고 생각 :

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

를 ...하지만 그것은, 때 쉽게 달성의

답변

0

을 수행하는 방법을 모른다 당신은 scrollview와 UIPageviewcontroller를 만들었습니다. 예, UIScrollView를 사용하여 pageviewcontroller처럼 표시 할 수 있습니다. 이제 디스플레이 rect (현재 화면 + 두 번째 화면의 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