新的iPhone 5屏幕有新的纵横比和新的分辨率(640 x 1136像素)。
开发新的应用程序或将现有应用程序转换到新的屏幕尺寸需要什么?
我们应该记住什么,使应用程序“通用”的旧显示器和新的宽屏纵横比?
新的iPhone 5屏幕有新的纵横比和新的分辨率(640 x 1136像素)。
开发新的应用程序或将现有应用程序转换到新的屏幕尺寸需要什么?
我们应该记住什么,使应用程序“通用”的旧显示器和新的宽屏纵横比?
当前回答
使用视图的自动布局功能。它将自动调整到所有分辨率。
为控制器名称后缀为~iphone或~ipad的控制器创建两个xib。在编译时,Xcode将根据设备取正确的xib。
使用大小类,如果你想为iPhone和iPad创建一个单独的xib,如果视图足够简单,可以移植到iPhone和iPad。
其他回答
如果你的应用是为iPhone 4S或更早版本开发的,那么它将在iPhone 5上运行letterbox。
为了使你的应用程序适应新的更高的屏幕,你要做的第一件事是将启动图像更改为:Default-568h@2x.png。其大小应为1136x640 (HxW)。是的,在新的屏幕大小中设置默认图像是让你的应用占据整个新iPhone 5屏幕的关键。
(注意,命名约定只适用于默认映像。将另一个图像命名为“Image-568h@2x.png”不会导致它取代“Image@2x.png”被加载。如果你需要为不同的屏幕大小加载不同的图像,你必须通过编程来实现。)
如果你非常非常幸运,可能就是这样……但十有八九,你还得多走几步。
确保你的xib / view使用自动布局来调整自己的大小。 使用spring和struts来调整视图的大小。 如果这对你的应用不够好,设计你的xib/storyboard 的特定屏幕尺寸和以编程方式重新定位 其他。
在极端情况下(当以上都不满足时),设计两个xib并在视图控制器中加载适当的一个。
检测屏幕大小:
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
CGSize result = [[UIScreen mainScreen] bounds].size;
if(result.height == 480)
{
// iPhone Classic
}
if(result.height == 568)
{
// iPhone 5
}
}
我添加了新的默认启动图像,(在检查其他几个SE答案…)确保我的故事板都自动大小和子视图,但视网膜4英寸仍然是信箱。
然后我注意到我的信息plist有一个行项目“启动图像”设置为“Default.png”,因此我删除了它,神奇的字母盒不再出现。希望这能让别人免受我所经历的疯狂。
值得注意的是,在新的Xcode中,你必须将这个图像文件Default-568h@2x.png添加到资产中
在constants.h文件中,你可以添加以下定义语句:
#define IS_IPAD UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad
#define IS_IPHONE UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone
#define IS_WIDESCREEN (fabs((double)[[UIScreen mainScreen] bounds].size.height - (double)568) < DBL_EPSILON)
#define IS_IPHONE_5 (!IS_IPAD && IS_WIDESCREEN)
Peter,你真的应该看看Canappi,它为你做了所有这些,你所要做的就是指定这样的布局:
button mySubmitButton 'Sumbit' (100,100,100,30 + 0,88,0,0) { ... }
从那里Canappi将生成正确的objective-c代码,检测应用程序正在运行的设备,并将使用:
(100,100,100,30) for iPhone4
(100,**188**,100,30) for iPhone 5
Canappi的工作原理类似于界面生成器和故事板的结合,除了它是文本形式。如果已经有XIB文件,可以转换它们,这样就不必从头重新创建整个UI。