现在Apple即将开始发布iPhone 5,我正在考虑扩展我的应用程序,以便它们在iPhone 5上全屏显示。我在模拟器上运行了我的应用程序,即使是UITableView
延伸到屏幕底部的应用程序也会在屏幕顶部和底部出现黑条。
我的问题是:为iPhone 5扩展应用程序的最佳实践是什么?
我现在应该为3.5和4英寸屏幕制作一个单独的笔尖,还是扩展代码中的所有内容?
我正在努力使这一过渡尽可能顺利,所以我呼吁了解so,以引导我了解为两个屏幕构建的最佳方法。
利用应用程序中的全4英寸屏幕似乎很简单,只需添加一个名为Default-568h@2x.png
的新默认图像,大小为640 x 1136。Xcode 4.5将自动为您提供这一功能,为您的项目添加一个大小和名称合适的黑色图像。
对于使用标准UI组件(如表视图)的应用程序,表会神奇地扩展以填充屏幕。我为工作更新了一个应用程序,它就这么简单,只有几个与我自己的代码和UI设置有关的小问题。但总的来说,非常容易。
与此形成对比的是,我(为自己)开发的另一个应用程序,除了UIViews之外,它没有使用任何标准的UI组件。为了处理3.5英寸和4英寸的屏幕,我不得不花相当多的时间重构代码,这些代码需要知道应用程序的各种操作的屏幕大小。(在这种情况下,应用程序更像是一个游戏/模拟器,而不是一个生产力应用程序。)
因此,您的里程数可能会因支持4英寸屏幕所需的工作量而有所不同。正如我所发现的,这将取决于您的应用程序有多复杂和"非标准"。
在为大屏幕iphone5更新现有应用程序时,您可能还会发现屏幕底部不"可点击"。例如,如果屏幕底部有一个工具栏,该工具栏将正确显示,但按钮不会对触摸做出反应。如果是这种情况,你需要告诉应用程序该窗口正在使用全屏。
如果您有MainWindow.xib
,请打开它,选择window
,并在属性检查器中确保选中"启动时全屏"。
如果您的项目中没有MainWindow.xib
(大多数较新的项目也没有),那么您需要在应用程序代理的applicationDidFinishLaunching
中添加一行:
- (void)applicationDidFinishLaunching:(UIApplication *)application {
[window setFrame:[[UIScreen mainScreen] bounds]];
...
}
我把它放在方法的开头。工作起来很有魅力。
您将通过模拟器找到此路径XCode->Targets->Summary->iPhone/iPod Deployment Info(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;
这对我来说很好。
我也在寻找同样的问题,试图让iPhone 5(4")将我的xib文件渲染到全屏,我找到了这个答案,它说你只需要添加Default-568h@2x.png
图像就可以告诉iOS它需要在4"全屏中渲染你的应用程序。只是添加这个为我解决了问题。
为什么[UIScreen mainScreen].bounds]没有返回全屏大小?