2017-03-23 22 views
0

我在一個ContainerView中嵌入了一個PageController。 爲什麼我在PageController中顯示的視圖未縮放以適合PageController?我怎樣才能達到「規模適合」? (至少的PageController本身適應其尺寸與ContainerView)iOS/Swift 3:在UIPageController中UIView太大

我的類是:

import UIKit 

class YellowController : UIViewController 

{ 

} 

class GreenController : UIViewController 
{ 

} 

//from a tutorial: 
class PageController : UIPageViewController, UIPageViewControllerDataSource, UIPageViewControllerDelegate 
{ 
// from stackoverflow to avoid the black box at the bottom of the pagecontroller 
override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 

    for view in self.view.subviews 
    { 
     if view is UIScrollView 
     { 
      view.frame = UIScreen.main.bounds 
     } 
     else 
     { 
      view.backgroundColor = UIColor.clear 
     } 
    } 
} 


lazy var VCArray: [UIViewController] = 
{ 
    return [self.VCInstance(name: "InfoPage"), 
      self.VCInstance(name: "FragePage"), 
      self.VCInstance(name: "AntwortPage") ] 
}() 

private func VCInstance (name: String) -> UIViewController 
{ 
    let VCC = UIStoryboard(name: "Lerneinheit", bundle: nil).instantiateViewController(withIdentifier: name) 

    return VCC 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.dataSource = self 
    self.delegate = self 
    if let InfoPage = VCArray.first 
    { 
     setViewControllers([InfoPage], direction: .forward, animated: true, completion: nil) 
    } 
} 


public func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? 
{ 
    guard let viewControllerIndex = VCArray.index(of: viewController) 
    else 
    { 
     return nil 
    } 

    if (viewControllerIndex<1) 
    { 
     return nil 
    } 

    return VCArray[viewControllerIndex - 1] 
} 
public func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? 
{ 
    guard let viewControllerIndex = VCArray.index(of: viewController) 
     else 
    { 
     return nil 
    } 

    if viewControllerIndex == VCArray.count-1 
    { 
     return nil 
    } 

    return VCArray[viewControllerIndex + 1] 
} 

public func presentationCount(for pageViewController: UIPageViewController) -> Int 
{ 
    return VCArray.count 
} 

public func presentationIndex(for pageViewController: UIPageViewController) -> Int 
{ 
    guard let firstViewController = viewControllers?.first, let firstViewControllerIndex = VCArray.index(of: firstViewController) 
    else 
    { 
     return 0 
    } 

    return firstViewControllerIndex 
} 

IB: IB 結果第w黃色視圖beeing切割,而不是縮放以適合的PageController: Result wth the yellow view beeing cut instead of scaled to fit the PageController 約束爲黃色視圖: Constraints for the yellow view

+0

您需要提供更多數據。 「雙控制器」實際上是否包含嵌入標籤內的滾動視圖? 您是否正確使用自動佈局? 你如何「餵養」VC的UIPage? 提供剪切代碼會有幫助 – OhadM

+0

您的txtInfo是否可在該VC內滾動?此外,看起來你有一個灰色的約束,請刪除它。 – OhadM

+0

是的,它是可滾動的。 – daviid

回答

0

下面的代碼是多餘的,刪除它:

override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 

    for view in self.view.subviews 
    { 
     if view is UIScrollView 
     { 
      view.frame = UIScreen.main.bounds 
     } 
     else 
     { 
      view.backgroundColor = UIColor.clear 
     } 
    } 
}