我在两个靠近 iOS 邮件应用程序的控制器之间进行了自定义转换,其中一个控制器保持在另一个控制器的顶部,并具有一些已实现的滚动行为。
如果我从 Presented 视图控制器呈现一个不是全屏大小的新视图控制器,然后我关闭了这个新呈现的视图控制器,之前的 Presented 视图控制器会改变它的高度,然后调整自己的大小。
我知道这可能有点令人困惑,但请查看下面的 gif 示例。
如您所见,如果我展示这个自定义图像选择器然后关闭它,展示它的视图控制器会扭曲到全屏,然后调整到初始值。
我怎样才能防止这种情况发生?我希望呈现图像选择器的 ViewController 保持其高度。
关闭后,您可以看到调整大小的发生。
设置呈现视图控制器的大小
因为它是一个UIViewControllerAnimatedTransitioning
我创建一个自定义演示文稿并且它设置的大小有它自己的identity
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
。
您可以简单地将其添加到viewDidLoad
您的CustomPresentationController
.
或者,您也可以尝试modalPresentationStyle
作为“当前上下文”
您可以参考非常好的示例,说明如何在此处保持 VC 的某些部分透明
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句