首页 > 解决方案 > 嵌入在容器视图中的 pageViewController 的视图缩放问题

问题描述

我目前正在开发一个小型 Ipad 应用程序,但我遇到了两个帧大小的问题UIViewController。这两个通过 a 调用UIPageViewController,以允许从一个视图滚动到另一个视图。Page View Controller 依次嵌入到容器视图中,如下所示:

图1]

因为我想在其中一个视图控制器中显示一些图表,所以我在其中有其他视图,然后用图表填充。问题是,由于某种原因,当第一次调用这个 viewController 时,整个视图的帧大小是关闭的。

图2]

这会导致图被错误地缩放。当我旋转设备时,问题消失了,因为在 'didRotate() {...}' 中使用正确的帧大小重新绘制了绘图

图3] 图4]

所以当我旋转设备两次时,我得到了我想要的图。

我一直在绞尽脑汁想如何解决这个问题,但到目前为止没有任何效果。唯一让我知道发生了什么的事情是,在重新加载所有内容之前,容器视图的框架大小和 pageView 的视图不匹配。

我是堆栈溢出的新手,我不知道这是否足以继续。如果您需要任何其他信息,请告诉我,我很乐意提供更多背景信息。

任何帮助是极大的赞赏!

标签: swiftxcodeuipageviewcontrolleruicontainerview

解决方案


欢迎!

尝试在您的代码中使用它:

    pageViewer.view.translatesAutoresizingMaskIntoConstraints = false

    contentView.addSubview(pageViewer.view) // the UIView in the UIPageViewController

    let views: [String: Any] = ["ChartView": pageViewer.view as Any]

    contentView.addConstraints(NSLayoutConstraint.constraints(
        withVisualFormat: "H:|-0-[ChartView]-0-|",
        options: NSLayoutConstraint.FormatOptions(rawValue: 0),
        metrics: nil,
        views: views))
    contentView.addConstraints(NSLayoutConstraint.constraints(
        withVisualFormat: "V:|-0-[ChartView]-0-|",
        options: NSLayoutConstraint.FormatOptions(rawValue: 0),
        metrics: nil,
        views: views))

或者,您可以尝试使用此功能:

在尺寸检查器中自动调整大小


推荐阅读