iOS/Swift 3:UIPageController中的UIView太大

iOS/Swift 3:UIPageController中的UIView太大,ios,iphone,swift,uiview,Ios,Iphone,Swift,Uiview,我在ContainerView中嵌入了一个PageController。 为什么我在PageController中显示的视图没有缩放以适应PageController?我如何实现“按比例调整”? (至少PageController本身会根据ContainerView调整其大小) 我的课程是: import UIKit class YellowController : UIViewController { } class GreenController : UIViewController

我在ContainerView中嵌入了一个PageController。 为什么我在PageController中显示的视图没有缩放以适应PageController?我如何实现“按比例调整”? (至少PageController本身会根据ContainerView调整其大小)

我的课程是:

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
}
导入UIKit
类YellowController:UIViewController
{
}
类GreenController:UIViewController
{
}
//来自教程:
类PageController:UIPageViewController、UIPageViewControllerDataSource、UIPageViewControllerDelegate
{
//从stackoverflow避免页面控制器底部的黑匣子
重写func viewdilayoutsubviews(){
super.viewDidLayoutSubviews()
用于在self.view.subview中查看
{
如果视图是UIScrollView
{
view.frame=UIScreen.main.bounds
}
其他的
{
view.backgroundColor=UIColor.clear
}
}
}
惰性变量VCArray:[UIViewController]=
{
返回[self.VCInstance(名称:“InfoPage”),
self.VCInstance(名称:“FragePage”),
self.VCInstance(名称:“AntwortPage”)]
}()
private func VCInstance(名称:String)->UIViewController
{
让VCC=UIStoryboard(名称:“Lerneinheit”,bundle:nil)。实例化eViewController(带标识符:name)
返回VCC
}
重写func viewDidLoad(){
super.viewDidLoad()
self.dataSource=self
self.delegate=self
如果让InfoPage=VCArray.first
{
SetViewController([InfoPage],方向:。正向,动画:true,完成:nil)
}
}
public func pageViewController(uPageViewController:UIPageViewController,viewController在viewController:UIViewController之前)->UIViewController?
{
guard let viewControllerIndex=VCArray.index(of:viewController)
其他的
{
归零
}
如果(viewControllerIndex UIViewController?
{
guard let viewControllerIndex=VCArray.index(of:viewController)
其他的
{
归零
}
如果viewControllerIndex==VCArray.count-1
{
归零
}
返回VCArray[viewControllerIndex+1]
}
public func presentationCount(对于pageViewController:UIPageViewController)->Int
{
返回VCArray.count
}
公共函数表示索引(对于pageViewController:UIPageViewController)->Int
{
guard让firstViewController=ViewController?首先,让firstViewControllerIndex=VCArray.index(of:firstViewController)
其他的
{
返回0
}
返回firstViewControllerIndex
}
IB: 使用黄色视图进行切割而不是缩放以适合页面控制器的结果: 黄色视图的约束:
下面的代码是多余的,请将其删除:

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

您需要提供更多数据。“两个控制器”实际上是否包含嵌入标签内的滚动视图?您是否正确使用自动布局?如何“馈送”VC的UIPage?提供一个剪贴代码会很有帮助。你的txtInfo在VC中是可滚动的吗?另外,看起来你有一个灰色的限制,请删除它。是的,它是可滚动的。所以你添加了一个textview,你抱怨为什么它是可滚动的?问题是,黄色的视图大小没有调整到PageController的大小。它是这不是文本字段的问题。