【发布时间】:2017-06-05 11:31:02
【问题描述】:
我在两个与 iOS 邮件应用程序接近的控制器之间进行了自定义转换,其中一个通过一些实现的滚动行为保持在另一个之上。
如果我从已呈现的视图控制器中呈现一个不是全屏大小的新视图控制器,然后我关闭这个新呈现的视图控制器,则先前的已呈现视图控制器会更改其高度,然后自行调整大小。
我知道这可能有点令人困惑,但请查看下面的 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
}
}
有什么提示吗? 谢谢
【问题讨论】:
-
试试 self.automaticallyAdjustsScrollViewInsets = NO
-
在图像选择器类中还是在我调用演示文稿的类中?
-
你能添加一些代码来显示你是如何设置呈现图像选择器的 VC 的大小的吗?
-
@karthikeyan 没用
-
@GaneshSomani 是的,我会添加一些代码
标签: ios swift3 presentviewcontroller