UIPresentationController——我可以在呈现后更新呈现的视图控制器的框架吗?

UIPresentationController -- can I update the presented view controller's frame after presentation?

我正在使用自定义 UIPresentationController 子类来管理 UIViewController 的呈现。我正在覆盖 - (CGRect)frameOfPresentedViewInContainerView 以提供从 containerView 的边界插入的框架。

现在,在对 presentedViewController 进行一些用户操作后,我想更改 presentedViewController 的框架。我的问题是:有没有 'natural' 方法可以做到这一点??

如何在 presentedViewController 呈现后调整它的框架?

  1. 在 属性 中保留 NAV 或 VC 的实例(保存)
  2. 呈现一些 x 尺寸(也可以在 modalPresentationStyle 中更改为 popover/fullscreen)
  3. [用户操作后]关闭显示的导航或vc
  4. 目前已保存 VC/NAV 即更改为 Y 尺寸后(可以)

存储实例意味着再次出现在同一个地方。

像下面这样使用适当的动画滚动来平滑过渡

vc.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;

所以我采用的方法是执行以下操作:

我添加了从 <UIContentContainer> 实现的以下方法:

- (void)preferredContentSizeDidChangeForChildContentContainer:(id <UIContentContainer>)container 

然后我简单地更新了我的 presentedViewController 上的 preferredContentSize,得到了回调,并在 UIPresentationController 中动画了帧更新。