我正在使用 UIPresentationController 展示一个模式视图控制器。我使用以下方法将presentedView 的框架设置为小于containView 的边界:
override func frameOfPresentedViewInContainerView() -> CGRect {
let myDX = (self.containerView!.bounds.width - 600)/2
let myDY = (self.containerView!.bounds.height - 600)/2
return self.containerView!.bounds.insetBy(dx: myDX, dy: myDY)
}
到目前为止一切都很顺利。
现在,我在当前显示的模态视图控制器之上以模态方式呈现另一个视图控制器(默认非自定义),该控制器占据整个屏幕。因此,我在覆盖整个屏幕的默认模态视图控制器下方有一个自定义模态视图控制器。
问题是当我关闭覆盖整个屏幕的顶视图控制器时,我的自定义视图控制器也显示覆盖整个屏幕。我希望我的自定义视图控制器的大小保持不变(小于containerView)。有什么办法可以实现这一点吗?
任何帮助,将不胜感激
我遇到了同样的问题。我无法通过添加约束来解决它,并且-[UIPresentationController containerViewWillLayoutSubviews]
调用得太晚了(在关闭动画完成之后)。
一段时间后,我发现问题似乎是当您呈现默认视图时,呈现控制器视图正在从视图层次结构中删除UIModalPresentationFullScreen
presentationStyle
并在必须再次显示时再次添加全屏尺寸。
在 iOS 8 中,您可以使用UIModalPresentationOverFullScreen
as the presentationStyle
当从较小的控制器进行呈现时。此时系统不会自动删除当前控制器的视图。 (-[UIViewController viewWillDisappear:]
因此,当您执行此操作时,不会在呈现控制器上调用)
您还可以使用UIModalPresentationCustom
iOS 7 中提供了该功能,但是您必须提供自己的过渡动画。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)