UIViewController 的视图在呈现后立即改变尺寸

Posted

技术标签:

【中文标题】UIViewController 的视图在呈现后立即改变尺寸【英文标题】:UIViewController's view changes dimension immediately after being presented 【发布时间】:2013-03-22 23:00:44 【问题描述】:

我希望仅在笔尖中显示视图控制器的视图,但是当我调用 presentModalViewController:animated: 时尺寸正在改变:如下代码所示:

CGRect frame = viewController.view.frame;
NSLog(@"%f %f %f %f", frame.origin.x, frame.origin.y, frame.size.width, frame.size.height); 

[self presentModalViewController:viewController animated:YES];

frame = viewController.view.frame;
NSLog(@"%f %f %f %f", frame.origin.x, frame.origin.y, frame.size.width, frame.size.height);

输出:

0.000000 0.000000 297.000000 452.000000
0.000000 0.000000 540.000000 620.000000

是什么导致了这种变化,我可以做些什么来防止它?

我知道我可以插入

viewController.view.superview.frame = frame;

在演示后立即进行,但这似乎是一个 hack。

【问题讨论】:

【参考方案1】:

正如你在 developer.apple 关于presentModalViewController:animated: 的讨论中看到的那样

讨论

将 modalViewController 属性设置为指定的视图控制器。 调整其视图并将其附加到视图层次结构。视图根据 modalViewController 参数中控制器的 modalTransitionStyle 属性指定的过渡样式进行动画处理。

【讨论】:

我假设这种行为不能被禁用。

以上是关于UIViewController 的视图在呈现后立即改变尺寸的主要内容,如果未能解决你的问题,请参考以下文章

尝试在其视图不在窗口层次结构中的 UIViewController 上呈现 UIViewController

尝试在其视图不在窗口层次结构中的 UIViewController 上呈现 UIViewController

UIViewController 的视图在呈现后立即改变尺寸

从 UIViewController 方法更改 UIWindow 的呈现视图

如何访问呈现模态视图的 UIViewController 类/类名?

UIViewController 在解除先前呈现的模态视图控制器后被释放