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 的呈现视图