UIPresentationController - 我可以在演示后更新呈现的视图控制器的帧吗?

时间:2016-02-22 07:03:57

标签: ios uipresentationcontroller

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

现在,在presentViewController上执行一些用户操作后,我想更改presentViewController的框架。我的问题是:有一种'自然'的方式吗?

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

2 个答案:

答案 0 :(得分:6)

所以我这样做的方法是做以下事情:

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

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

然后我简单地更新了presentViewController上的preferredContentSize,获得了回调,并在UIPresentationController中为帧更新设置了动画。

答案 1 :(得分:-1)

  1. 在财产中保留NAV或VC的实例(保存)
  2. 以x尺寸显示(也可以在modalPresentationStyle中更改为popover / fullscreen)
  3. [用户操作后]关闭显示的导航或vc
  4. 保存VC / NAV,即更改为Y尺寸(可以)
  5. 存储实例意味着再次出现在同一个地方。

    使用如下所示的适当动画滚动来平滑过渡

    vc.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;