Ios ViewController不调整3.5英寸屏幕的大小

Ios ViewController不调整3.5英寸屏幕的大小,ios,objective-c,uiviewcontroller,ios7,autolayout,Ios,Objective C,Uiviewcontroller,Ios7,Autolayout,我真的很挣扎。我到处寻找这个问题,但似乎没有人遇到完全相同的问题 所以我有一个ios7项目,它应该在4英寸和3.5英寸的设备上运行。 在4英寸上,一切正常,但在3.5英寸上,视图控制器的帧高度为568 如果我在AppDelegate中记录UIScreen边界,它将正确返回480。但如果我创建UIViewController并将其作为rootViewController添加到NavigationController,其高度为568。 (NavigationController的正确高度为480)

我真的很挣扎。我到处寻找这个问题,但似乎没有人遇到完全相同的问题

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

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

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

这让我抓狂,因为我的另一个项目以这种方式运行良好,并且ViewController会自动调整大小

我检查了是否在images.xcsets中定义了正确的起始图像,并尝试了使用和不使用autolayout的XIB

只有一件事是有帮助的,如果我将xib中的模拟指标设置为“无”或3.5英寸,那么我就不会在4英寸屏幕上显示全屏。对于我来说,两个屏幕都有多个xib不是解决方案

任何暗示都将不胜感激


谢谢

我也有类似的问题。原来我有一个嵌入式segue,原始容器视图硬编码为568:


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

我目前在使用autoLayouts时遇到了这个问题,但现在我已经使用nib解决了这个问题。所以我想和你分享

如果您正在通过nib制作viewController。然后,您应该确保选中了“从笔尖调整视图大小”。完成此操作后,您将获得视图w.r.t屏幕边界的帧高度。(在3.5英寸屏幕中为480,在4英寸屏幕中为568)


这件事发生在我身上,但情况正好相反——应用程序运行在4英寸屏幕上,屏幕为3.5英寸


诀窍在于你的发射图像。确保您的R4图像实际用于4英寸,而@2X图像用于3.5英寸。

您在错误的时间获得了尺寸

初始化的大小来自NIB,
因此,您需要在
-viewdilayoutsubviews
中获得调整后的大小(较低版本在
-viewdilaybeen
中)

如果您使用自动布局,请检查您是否设置了适当的约束以使视图根据屏幕大小自动调整大小,否则请检查您是否设置了正确的自动重新设置屏幕大小。您好,谢谢您的回答。当我以编程方式创建视图控制器时,我能够解决这个问题(我必须清除派生数据并清理产品),但现在我需要让XIB中的autolayout正常工作。我正在研究约束,但在我看来,我只能为子视图定义约束,而不能为主视图控制器的视图定义约束。如何根据屏幕设置自动调整大小的限制?本指南将帮助您同时支持ios 6和ios 7。同意,这个问题令人恼火。在某种类似的情况下,这挽救了这一天-(void)viewWillLayoutSubviews{//fix,以使其在所有(大多数?)设备上正确定位!self.scrollView.contentOffset=CGPointMake(self.scrollView.contentOffset.x,0);}xib文档中的视图版本是什么?我的名字是“iOS 7及更高版本”。我看不到这个选项。我目前正在使用xCode 5.1.1。我的项目在故事板中。你使用故事板还是简单的xib???我在我的项目中不使用故事板。我的问题是由自动布局故障引起的。我没有正确定义滚动视图内容的约束,这个问题正在通过约束关系传播到主控制器。还因为我在代码中创建了主窗口(我需要在主窗口中参数化委托类,这就是为什么我不在主窗口中使用xib)。主窗口的设置如下:UIWindow*window=[[UIWindow alloc]init];window.autoresizingMask=uiviewsautoresizingflexiblewidth | uiviewsautoresizingflexiblewhight;ETCEX与大型设备完全相同。启动图像确定要显示的大小。这里有苹果关于所有设备和图像/图标尺寸的官方指南: