【发布时间】:2013-11-17 17:08:55
【问题描述】:
我真的在为这个而苦苦挣扎。我搜索了这个问题,但似乎没有人遇到完全相同的问题。
所以我有这个 ios7 项目,它应该在 4 英寸和 3.5 英寸设备上运行。 在 4 英寸上,一切都很好,但在 3.5 英寸上,视图控制器的帧高度为 568
如果我在 AppDelegate 中记录 UIScreen 边界,它会正确返回 480。但是如果我创建 UIViewController 并将它作为 rootViewController 添加到 NavigationController,它的高度是 568。 (NavigationController 480 的高度太合适了)
首先,我认为可能是因为 XIB,所以我创建了空白 UIViewController 只是 [[UIViewController alloc] init],但它的高度仍然是 568。
这让我发疯了,因为我的其他项目以这种方式运行良好,并且视图控制器会自动调整大小。
我检查了我在 images.xcassets 中定义了正确的起始图像,并且我尝试了使用和不使用自动布局的 XIB。
只有一件事有帮助,如果我将 xib 中的模拟指标设置为 NONE 或 3.5 英寸,但我不会在 4 英寸上获得全屏。两个屏幕都有多个 xib 对我来说不是解决方案。
任何提示将不胜感激
谢谢
【问题讨论】:
-
如果您使用自动布局,请检查您是否设置了适当的约束以使视图根据屏幕大小自动调整大小,否则请检查您是否设置了正确的 autoResizingMask。
-
您好,感谢您的回答。当我以编程方式创建视图控制器时,我能够解决问题(我必须清除派生数据并清理产品),但现在我需要让 XIB 中的自动布局正常工作。我正在研究约束,但在我看来,我只能为子视图定义约束,但不能为主视图控制器的视图定义约束。如何根据屏幕设置自动调整大小的约束?
-
本指南将帮助您同时支持 ios 6 和 ios 7,developer.apple.com/library/ios/documentation/userexperience/…
-
同意,这个问题真让人生气。在有点类似的情况下,这节省了一天.. - (void)viewWillLayoutSubviews { // 可怕的修复,使其在所有(大多数??很多??)设备上正确定位! self.scrollView.contentOffset = CGPointMake(self.scrollView.contentOffset.x, 0); }
标签: ios objective-c uiviewcontroller ios7 autolayout