2016-12-22 5 views
5

मैंने अपने ऐप में UIPageViewController को समझने और कार्यान्वित करने के लिए इस अद्भुत ट्यूटोरियल How to Use UIPageViewController in Swift का उपयोग किया।पिछले और अगले विचारों का एक भाग प्रदर्शित करने के लिए UIPageViewController का उपयोग कैसे करें

मैंने सफलतापूर्वक एकीकरण पूरा कर लिया है, लेकिन मुझे अब थोड़ा सा व्यवहार संशोधित करने की आवश्यकता है।

एक समय में केवल एक रंगीन दृश्य देखने के बजाय, मैं पिछले दृश्य का 25% और अगले के 25% को देखना चाहता हूं।

enter image description here

मुझे लगता है कि मैं 3 viewcontrollers गुजर इस विधि का उपयोग करने के लिए है:

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

... लेकिन मैं

उत्तर

0

कैसे करना है यह, जब आसानी से प्राप्त नहीं जानता आपने स्क्रूव्यू के साथ UIPageviewcontroller बनाया है। हां, आप इसे पृष्ठदृश्य नियंत्रक की तरह दिखाने के लिए UIScrollView का उपयोग कर सकते हैं। अब डिस्प्ले रेक्ट (आपके मामले में वर्तमान स्क्रीन + दूसरी स्क्रीन का 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

संबंधित मुद्दे

 संबंधित मुद्दे