ViewControllers没有为3.5英寸屏幕调整大小

时间:2013-11-17 17:08:55

标签: ios objective-c uiviewcontroller ios7 autolayout

我真的很挣这个。我搜索了这个问题,但似乎没有人遇到完全相同的问题。

所以我有这个ios7项目,它应该在4英寸和3.5英寸设备上运行。 在4英寸,一切都很好,但在3.5英寸视图控制器的框架高度为568

如果我在AppDelegate中记录UIScreen边界,它会正确返回480.但是如果我创建UIViewController并将其作为rootViewController添加到NavigationController,它的高度为568。 (NavigationController的高度也是480)

首先,我认为可能是因为XIB,所以我创建了空白的UIViewController [[UIViewController alloc] init],但它的高度仍为568。

这让我抓狂,因为我的其他项目工作正常,并且viewcontrollers会自动调整大小。

我检查过我在images.xcassets中定义了一个正确的起始图像,我尝试使用和不使用自动布局的XIB。

只有一件事有所帮助,如果我将xib中的模拟指标转为NONE或3.5英寸,但是我不会在4英寸上获得全屏。并且两个屏幕都有多个xib对我来说不是解决方案。

任何提示都将不胜感激

由于

4 个答案:

答案 0 :(得分:1)

我目前正面临这个问题,因为我正在使用autoLayouts,但现在我已经使用nib解决了这个问题。所以我想和你分享。

如果你是通过nib制作一个viewController。然后,您应确保选中“从NIB调整视图”。执行此操作后,您将获得视图w.r.t屏幕边界的帧高。 (3.5英寸屏幕将是480英寸,4英寸屏幕将是568)。

enter image description here

答案 1 :(得分:1)

这种情况发生在我身上,除非是另一种方式 - 应用程序使用3.5英寸屏幕在4英寸上运行。

诀窍是你的发布图像。确保您的R4图像实际上是4英寸,而@ 2X图像是3.5英寸。

答案 2 :(得分:1)

你的时间错误。

初始化大小来自NIB, 因此,您需要在-viewDidLayoutSubviews-viewDidAppear中的较低版本)

中获得调整后的尺寸

答案 3 :(得分:0)

我有类似的问题。事实证明我有一个嵌入的segue,并且原始容器视图被硬编码为568:

Here

我不确定这是否能解决您的问题,但需要注意的事项。