在 iOS 8 中调整打开的模型视图的大小

Resizing an open model view in iOS 8

我有一个显示为表单 sheet 的 UIViewController,当用户 select 进行特定设置时,模式会扩展以显示更多数据(同样,如果他们 select 别的东西)。

在 iOS 7 及以下版本中,可以使用

调整模态视图的大小

[self.view.superview setBounds:CGRectMake(0, 0, 320, 480)];

在 iOS 8 中,我知道您可以使用 setPreferredContentSize 来设置弹出窗口的初始大小,但这不适用于调整当前显示的弹出窗口的大小。

所以我的问题是,如何在 iOS 8 中调整显示的弹出窗口的大小?

通过 b3ginneriOS 的提示,我解决了这个问题。

首先,我将模态视图控制器中的所有内容都移动到一个子视图中,并将所有调整大小的过渡应用于该子视图(将主视图保留为最大尺寸)。

仅对于 iOS 8,在当前上下文中使用 Presentation。 在prepareForSegue

if(IS_IOS8) {
    [[segue destinationViewController] setModalPresentationStyle:UIModalPresentationOverCurrentContext];
}

并添加半透明背景:

[self.view setBackgroundColor:[UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.45]];

通过一些调整使视图正确居中(取决于 iOS7 的超级视图调整大小和 iOS8 的子视图),一切正常。