iOS-从显示的视图控制器显示视图控制器会更改其高度

iOS-从显示的视图控制器显示视图控制器会更改其高度,ios,swift3,presentviewcontroller,Ios,Swift3,Presentviewcontroller,我在靠近iOS邮件应用程序的两个控制器之间有一个自定义转换,其中一个保持在另一个之上,并实现了一些滚动行为 如果我从显示的视图控制器中显示一个新的视图控制器,该视图控制器不是全屏大小,然后我关闭此新显示的视图控制器,则先前显示的视图控制器会更改其高度,然后调整其自身大小 我知道这可能有点混乱,但请检查下面的gif示例 如您所见,如果我呈现这个自定义图像选择器,然后将其关闭,则呈现它的视图控制器将扭曲为全屏,然后调整为初始值 我怎样才能防止这种情况发生?我希望显示图像选择器的ViewContro

我在靠近iOS邮件应用程序的两个控制器之间有一个自定义转换,其中一个保持在另一个之上,并实现了一些滚动行为

如果我从显示的视图控制器中显示一个新的视图控制器,该视图控制器不是全屏大小,然后我关闭此新显示的视图控制器,则先前显示的视图控制器会更改其高度,然后调整其自身大小

我知道这可能有点混乱,但请检查下面的gif示例

如您所见,如果我呈现这个自定义图像选择器,然后将其关闭,则呈现它的视图控制器将扭曲为全屏,然后调整为初始值

我怎样才能防止这种情况发生?我希望显示图像选择器的ViewController保持其高度

关闭后,您可以看到正在发生调整大小的操作

设置显示视图控制器的大小

由于它是一个
UIViewControllerAnimatedTransitioning
我创建了一个自定义演示文稿,它设置的大小有自己的
标识

class CustomPresentationController: UIPresentationController {

    override init(presentedViewController: UIViewController, presenting presentingViewController: UIViewController!) {
        super.init(presentedViewController: presentedViewController, presenting: presentingViewController)
    }

    override var frameOfPresentedViewInContainerView: CGRect {
        let containerBounds = self.containerView?.bounds
        let origin = CGPoint(x: 0.0, y: ((containerBounds?.size.height)! * 0.05))
        let size = CGSize(width: (containerBounds?.size.width)! , height: ((containerBounds?.size.height)! * 0.95))
        // Applies the attributes
        let presentedViewFrame: CGRect = CGRect(origin: origin, size: size)
        return presentedViewFrame
    }

    override func containerViewWillLayoutSubviews() {
        presentedView?.frame = frameOfPresentedViewInContainerView
    }
}
有什么提示吗?
谢谢

我想这就是问题所在。您正在强制设置帧大小,但该大小不起作用。您应该使用类似于
preferredContentSize
的内容

您只需将其添加到
CustomPresentationController
viewDidLoad

或者,您也可以尝试将
modalPresentationStyle
作为“当前上下文”


您可以参考一些很好的示例,说明如何使VC的某些部分保持透明

在图像选择器类或我调用演示文稿的类中尝试self.automaticallyAdjustsScrollViewInsets=noi。您可以添加一些代码,说明如何准确设置呈现图像的VC的大小吗皮克。@karthikeyan它没有work@GaneshSomani是的,我会添加一些代码,我会按照你说的方式尝试。如果它不起作用,我会给你一些提示;)谢谢,它没有按预期工作。我尝试将
preferedContentSize
应用到我想要的大小,如果它向右移动,除了它被剪裁到左上角的原点,因此它在底部有一个空的黑色条。我仍然需要实现presentedviewcontainerview的
框架,以便将其原点设置为左下角。当您创建新电子邮件时,我正在尝试创建类似于iOS mail.app的东西,动画本身带有手势。很抱歉,但我相信您的解决方案有点错误。视图将在添加和删除任何viewcontroller后调整大小。同样对于空的黑条,您确定使用的是“过当前上下文”吗?