13

现在Apple即将开始发布 iPhone 5,我正在考虑扩展我的应用程序,以便它们在iPhone 5上全屏显示。我在模拟器上运行我的应用程序,即使是那些UITableView延伸到屏幕底部的应用程序,黑条也会出现在屏幕的顶部和底部。

这是我的问题:为iPhone 5扩展应用程序的最佳做法是什么?

我现在应该为3.54英寸的屏幕制作一个单独的笔尖,还是在代码中扩展所有内容?

我正在尝试使过渡尽可能顺利,因此我呼吁了解 SO 来引导我了解为两个屏幕构建的最佳方法是什么。

4

4 回答 4

13

在您的应用程序中利用完整的 4" 屏幕似乎就像添加一个名为Default-568h@2x.png640 x 1136 的新默认图像一样简单。Xcode 4.5 实际上会通过添加适当大小的黑色图像和为您的项目命名。

对于使用标准 UI 组件(例如表格视图)的应用程序,表格会神奇地扩展以填满屏幕。我更新了一个工作应用程序,它实际上就是这么简单,只有几个与我自己的代码和 UI 设置相关的小问题。但总而言之,非常容易。

将此与我(为我自己)开发的另一个应用程序进行对比,该应用程序除了 UIViews 之外不使用任何标准 UI 组件。为了同时处理 3.5" 和 4" 屏幕,我不得不花费大量时间重构代码,这些代码需要了解应用程序的各种操作的屏幕尺寸。(在这种情况下,应用程序更像是一个游戏/模拟器,而不是生产力应用程序。)

因此,您的里程可能会因支持 4 英寸屏幕所需的工作量而异。正如所发现的,这取决于您的应用程序的复杂程度和“非标准”程度。

于 2012-09-20T18:51:48.267 回答
6

在为大屏 iphone 5 更新现有应用程序时,您可能还会发现屏幕底部不是“可点击”的。例如,如果您在屏幕底部有一个工具栏,则该工具栏将正确显示,但按钮不会对触摸做出反应。如果是这种情况,您需要告诉应用程序该窗口正在使用全屏。

如果你有MainWindow.xib,打开它,window在属性检查器中选择并确保选中“启动时全屏”。

如果您的项目中没有(并且大多数较新的项目没有),那么您需要在应用程序委托MainWindow.xib中添加一行:applicationDidFinishLaunching

- (void)applicationDidFinishLaunching:(UIApplication *)application {

    [window setFrame:[[UIScreen mainScreen] bounds]];
    ...
}

我把它放在方法的开头。像魅力一样工作。

于 2012-09-24T14:03:53.970 回答
3

您将在模拟器XCode->Targets->Summary->iPhone/iPod Deployment Info( Retina 4-inch )中找到此路径

您需要添加尺寸为 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;

这对我来说很好。

于 2012-11-22T05:34:59.213 回答
0

我正在寻找同样的问题,试图让 iPhone 5 (4") 将我的 xib 文件呈现为全屏,我找到了这个答案,它说你只需要添加Default-568h@2x.png图像来告诉 iOS 它需要呈现你的应用程序在 4 英寸全屏。只是添加这个解决了我的问题。

为什么 [UIScreen mainScreen].bounds] 没有返回全屏尺寸?

于 2014-06-24T01:34:05.040 回答