UIView的frame在viewWillAppear:和viewDidAppear:之间会发生改变。

8
我正在使用 frame: CGRectMake(0, 0, 1024, 768) 初始化一个 UIView。一切似乎都没问题,直到它的父视图进入 viewDidAppear: 方法时,frame 改变为 768, 1024。只有当 "Status bar is initially hidden" 属性设置为 YES 时才会出现此问题。如果状态栏被显示,frame 就不会改变。
我已经在 viewWillAppear: 和 viewDidAppear: 中检查了 UIInterfaceOrientation,它们之间没有改变。
为什么隐藏状态栏时,frame 的高度和宽度会交换?

你在哪里将状态栏隐藏设置为NO? - rishi
1
你可以尝试一件事情,在app delegate中将viewController的wantsFullScreenLayout属性设置为YES并检查,虽然不确定它是否适用于你,但似乎是一个奇怪的问题。另外,你能告诉我你是在哪里以及如何处理应用程序的方向吗?这可能是这个问题的原因。 - rishi
谢谢!wantsFullScreenLayout 属性解决了问题。文档描述在隐藏状态栏时应将此属性设置为 YES。但是 UIView 交换高度和宽度仍然相当奇怪。 - ThomasCle
当文档中提到像这样做时,这实际上并不奇怪。 :) 现在我将其发布为答案。 - rishi
1个回答

3
app delegate 中将 viewControllerwantsFullScreenLayout 属性设置为 YES。

自iOS7以来,wantsFullScreenLayout已被弃用 - https://dev59.com/5GIk5IYBdhLWcg3wiuik - Jasper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接