2016-12-22 22 views
5

Uygulamamda bir UIPageViewController'ı anlamak ve uygulamak için bu muhteşem öğretici How to Use UIPageViewController in Swift'u kullandım.Önceki ve sonraki görünümlerin bir bölümünü görüntülemek için UIPageViewController nasıl kullanılır

Entegrasyonu başarıyla tamamladım, ancak şimdi davranışı biraz değiştirmem gerekiyor.

Aynı anda yalnızca bir renkli görüntüyü görüntülemek yerine, önceki görüntünün% 25'ini ve sonraki görüntünün% 25'ini görmek istiyorum.

enter image description here

Ben 3 viewcontrollers geçen bu yöntemi kullanmak zorunda düşünüyorum:

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

... ama O, ne zaman kolayca ulaşılabilir olduğunu

cevap

0

nasıl bilmiyorum scrollview ile UIPageviewcontroller oluşturdunuz. Evet, pageviewcontroller gibi göstermek için UIScrollView uygulamasını kullanabilirsiniz. Şimdi ekran rect (mevcut ekranınızda ikinci ekranın% 25'i) elinizde.

Bunun için kodu aşağıdadır.

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. 
    } 
} 

İşte size yardımcı olacak güzel öğretici budur. Custom PageView Controller with scrollview

+0

En iyi çözüm UIPageViewController kullanmak değil, çift UIViewController/UIScrollViewDelegate kullanmak yerine? – cmii