现在 Apple 即将开始发售iPhone 5,我正在考虑扩展我的应用程序,以便它们在 iPhone 5 上全屏显示。我在模拟器上运行我的应用程序,甚至是UITableView
延伸到屏幕底部的应用程序,黑色条显示在屏幕的顶部和底部。
以下是我的问题:为 iPhone 5 扩展应用的最佳做法是什么?
我现在应该为 3.5 和 4 英寸屏幕制作单独的笔尖,还是扩展代码中的所有内容?
我正在尝试尽可能顺利地进行转换,因此我呼吁了解SO,以便了解为两个屏幕构建的最佳方法。
答案 0 :(得分:13)
利用应用中的完整4英寸屏幕似乎就像添加一个名为Default-568h@2x.png
且尺寸为640 x 1136的新默认图像一样简单.Xcode 4.5实际上会通过添加自动为您执行此操作适合您项目的大小和名称的黑色图像。
对于使用标准UI组件的应用程序(例如表视图),表格会神奇地扩展以填充屏幕。我更新了一个应用程序的工作,它实际上很简单,只有几个与我自己的代码和UI设置相关的小问题。但总而言之,非常容易。
将此与我工作的另一个应用程序(对我自己)进行对比,除了UIViews之外,它不使用任何标准UI组件。为了处理3.5“和4”屏幕,我不得不花费相当多的时间来重构需要了解应用程序各种操作的屏幕大小的代码。 (在这种情况下,应用程序更像是游戏/模拟器而不是生产力应用程序。)
因此,您的里程可能因支持4“屏幕所需的工作量 而有所不同。这取决于您的应用程序有多复杂和”非标准“,因为我已经发现了。
答案 1 :(得分:6)
更新大屏幕iphone 5的现有应用程序时,您可能还会发现屏幕底部不可点击"。例如,如果屏幕底部有一个工具栏,则该工具栏将正确显示,但按钮不会对触摸作出反应。如果是这种情况,您需要告诉应用程序窗口正在全屏显示。
如果您有MainWindow.xib
,请将其打开,选择window
,然后在属性检查器中确保"启动时全屏"检查。
如果您的项目中没有MainWindow.xib
(大多数新项目都没有),那么您需要在应用代表的applicationDidFinishLaunching
中添加一行。 :
- (void)applicationDidFinishLaunching:(UIApplication *)application {
[window setFrame:[[UIScreen mainScreen] bounds]];
...
}
我把它放在方法的开头。工作就像一个魅力。
答案 2 :(得分:3)
你会发现这条路径有模拟器 XCode->目标 - >摘要 - > iPhone / iPod部署信息(Retina 4英寸)
您需要添加尺寸为640 x 1136的默认图片。
将此代码应用于AppDelegate
文件
mainWindow = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
mainWindow.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
您将获得窗口的主屏幕大小。还有一件事,只要你想检查你的类文件,只需添加此代码
if ([UIScreen mainScreen].bounds.size.height > 500.0f)
对于您的视图控制器,只需添加一个属性autoresizingMask
self.view.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
这对我来说很好。
答案 3 :(得分:0)
我一直在寻找同样的问题,试图让iPhone 5(4")将我的xib文件渲染到全屏,我找到了这个答案,说你只需添加Default-568h@2x.png
图像告诉iOS它需要在4"全屏。只是添加这个解决了我的问题。
Why [UIScreen mainScreen].bounds] is not returning full screen size?