2016-05-03 4 views
2

Ich habe gerade eine UIPageViewController mit Seiteninhalt Ansicht Controller erstellt, die aus einzelnen ImageView und einem Button besteht. Es funktioniert fast fehlerlos, aber es hat ein großes Problem, wenn ich versuche, durch die Ansichten nur in der vertikalen Ansicht zu gleiten, wobei der Aspektfüllmodus für meinen ImageView eingestellt ist (was ziemlich grundlegend dafür eingerichtet ist).Weird UIPageViewController Gleitverhalten mit Aspect Fill Bildmodus

Sie dieses Verhalten hier sehen können: https://youtu.be/2yl6UXbUGQg

Ich bin mit automatischen Layout, Knopf Einschränkungen werden auf Image (full size) ausgerichtet sind, Image Einschränkungen Super sind auf ...

Code:

1) UIPageViewController:

class ViewController: UIPageViewController, UIPageViewControllerDataSource { 

    var arrPageTitle: NSArray = NSArray() 
    var arrPagePhoto: NSArray = NSArray() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     arrPageTitle = ["page 1", "page 2", "page 3"] 
     arrPagePhoto = ["slider-1.jpg", "slider-2.jpg", "slider-3.jpeg"] 

     self.dataSource = self 
     self.setViewControllers([getViewControllerAtIndex(0)] as [UIViewController], 
           direction: .Forward, 
           animated: false, 
           completion: nil) 
    } 

    func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? { 
     let pageContent: PageContentViewController = viewController as! PageContentViewController 
     var index = pageContent.pageIndex 
     if ((index==0) || (index == NSNotFound)) { 
      return nil 
     } 
     index -= 1 
     return getViewControllerAtIndex(index) 
    } 

    func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? { 
     let pageContent: PageContentViewController = viewController as! PageContentViewController 
     var index = pageContent.pageIndex 
     if index == NSNotFound { 
      return nil 
     } 
     index += 1 
     if index == arrPageTitle.count { 
      return nil 
     } 
     return getViewControllerAtIndex(index) 
    } 

    func getViewControllerAtIndex(index: NSInteger) -> PageContentViewController { 
     let pageContentViewController = self.storyboard?.instantiateViewControllerWithIdentifier("PageContentViewController") as! PageContentViewController 
     pageContentViewController.strTitle = "\(arrPageTitle[index])" 
     pageContentViewController.strPhotoName = "\(arrPagePhoto[index])" 
     pageContentViewController.pageIndex = index 
     return pageContentViewController 
    } 
} 

2) Inhalt view-Controller, UIViewController:

class PageContentViewController: UIViewController { 

    @IBOutlet weak var imageView: UIImageView! 
    @IBOutlet weak var labelTitle: UIButton! 

    var pageIndex: Int = 0 
    var strTitle: String! 
    var strPhotoName: String! 


    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.imageView.image = UIImage(named: self.strPhotoName) 
     self.labelTitle.setTitle(self.strTitle, forState: .Normal) 
    } 
} 

Antwort

5

Ihre Bildansichten von einem View-Controller sind verschütten auf andere Ansicht-Controller über, weil Sie clipsToBounds zu true auf Ihrer Bildansicht einstellen müssen. Dies verhindert, dass der Inhalt der Bildansicht über die Grenzen der Bildansicht hinausgeht.

+1

Vielen Dank! Du hast recht :) – jwitos

0

Überprüfen Sie Clip Subviews, um zu verhindern, dass die Größe der Bildansicht gestreckt wird.

Clip Subviews