ios - iphone 5屏幕的分辨率,如何开发或者迁移应用程序?

  显示原文与译文双语对照的内容

新的iPhone 5显示有一个新的纵横比和一个新的分辨率( 640 x 1136像素) 。

开发新的或者转换的所需的是已经存在的应用程序到新屏幕大小?

我们应该记住什么才能让应用程序"通用"同时显示旧的显示器和新的宽屏宽高比?

时间: 原作者:

  1. 下载并安装最新版本的Xcode
  2. 为你的应用程序设置 4 -inch启动映像。 这就是如何获得 1136像素屏幕高度( 没有它,你将得到 960像素的黑色边,上边和底部) 。
  3. 测试你的应用程序,并希望不做这项工作的话,因为一切都应该工作神奇地如果你能恰当地设定自动调整大小的遮罩。
  4. 如果没有,请用适当的自动调整大小来调整视图布局,或者查看自动布局,如果你只想支持 iOS 6.
  5. 如果你需要为较大的屏幕做一些事情,那么看起来你必须检查 [[UIScreen mainScreen] bounds] ( 或者 applicationFrame,但是你需要考虑状态栏的高度如果它存在)的高度,因为似乎没有特定的API 。

例如:


CGRect screenBounds = [[UIScreen mainScreen] bounds];
if (screenBounds.size.height == 568) {
//code for 4-inch screen
} else {
//code for 3.5-inch screen
}

注意:auto-rotation API已经完全改变了,如果你的应用程序支持除了默认的旋转之外的任何旋转。

原作者:

在 iPhone 如果你有一个应用程序构建为拥有 4 S 或者更早版本,它将运行

要使你的应用程序适应新的更高的屏幕,首先要做的是将启动映像更改为: default-568h@2x 。png 。它的大小应为 1136 x640 ( HxW ) 。 是的,在新的屏幕大小中使用默认的图像是让你的应用占据整个 iPhone 5屏幕的关键。

( 注意,命名约定只适用于默认图像) 。 命名另一个图像"image-568h@2x 。png"不会使它被装入"image@2x 。png"。 如果你需要为不同的屏幕大小加载不同的图像,你必须以编程方式进行。)

如果你非常幸运,那可能就是。。 但无论如何,你需要再做几个步骤。

  • 确定你的xibs/视图使用auto-layout来调整自身大小。
  • 使用弹簧和支柱调整视图大小。
  • 如果这对于你的应用程序不够好,那么为你的Storyboard/设计一个特定的屏幕大小并以编程方式重新定位其他的。

在极端案例( 当上任何一个都不足以满足时) 中,设计两个Xibs并在视图控制器中加载相应的。

要检测屏幕大小:


if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
 CGSize result = [[UIScreen mainScreen] bounds].size;
 if(result.height == 480)
 {
//iPhone Classic
 }
 if(result.height == 568)
 {
//iPhone 5
 }
}

原作者:

唯一需要做的事情是添加一个名为"default-568h@2x 。png"的启动映像到应用程序资源,在一般情况下,( 如果你够幸运的话) 会正常运行。

如果应用程序不处理触摸事件,请确保密钥窗口具有适当的大小。 解决办法是设置正确的框架:


[window setFrame:[[UIScreen mainScreen] bounds]]

迁移到 iOS 6时,还有其他与屏幕大小无关的问题。 阅读 iOS 6.0发行说明了解详情。

原作者:

有时候( 用于pre-storyboard应用),如果布局是将是足够不同,值得在viewController中指定一个不同的xib根据设备( iPhone改变了这个问题看到 - 你会需要修改代码来处理) init,如下任何实验与 autoresizing twiddling的面罩会工作如果你需要不同的图形。


-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

 NSString *myNibName;
 if ([MyDeviceInfoUtility isiPhone5]) myNibName = @"MyNibIP5";
 else myNibName = @"MyNib";

 if ((self = [super initWithNibName:myNibName bundle:nibBundleOrNil])) {
. . .etc

适用于面向较老操作系统版本的应用。

原作者:

在这里你可以找到一个不错的教程( 对于 MonoTouch,你也可以使用Non-MonoTouch-projects的信息):
http://redth.info/get-your-monotouch-apps-ready-for-iphone-5-ios-6-today/

  1. 为你的飞溅/默认屏幕( 640 x 1136像素 ) 创建一个新图像,名称为 Default-568h@2x.png"

  2. iOS模拟器中,转到硬件-> 设备菜单,并选择"磅的iPhone ( Retina 4 -inch ) )"

  3. 创建其他图像,比如 背景图像

  4. 检测iphone4以加载你的新图像:


public static bool IsTall
{
 get {
 return UIDevice.currentDevice.userInterfaceIdiom
 == UIUserInterfaceIdiomPhone
 && UIScreen.mainScreen.bounds.size.height
 * UIScreen.mainScreen.scale> = 1136;
 }
}



private static string tallMagic ="-568h@2x";
public static UIImage FromBundle16x9(string path)
{
//adopt the -568h@2x naming convention
 if(IsTall())
 {
 var imagePath = Path.GetDirectoryName(path.ToString());
 var imageFile = Path.GetFileNameWithoutExtension(path.ToString());
 var imageExt = Path.GetExtension(path.ToString());
 imageFile = imageFile + tallMagic + imageExt;
 return UIImage.FromFile(Path.Combine(imagePath,imageFile));
 }
 else
 {
 return UIImage.FromBundle(path.ToString());
 }
}

原作者:

我在这里解决这个问题 只需将 ~568h@2x 后缀添加到图像和 ~568h 到 xib 不需要更多的运行时检查或者代码更改。

我添加了新的默认启动映像,( 在签出其他几个答案时。。) 确保我的Storyboard 所有auto-sized本身和 subviews,但是 Retina 4英寸。

然后我注意到我的信息plist有一个"启动图像"设置为" default.png"的行项目,于是我删除了它,并奇迹般地不再出现。 希望能让其他人和我一样疯狂。

要确定你的应用程序是否支持 iPhone 5 Retina,请使用以下命令: ( 这可能是更健壮的要返回的类型的展示及 4 Retina,等等 下面编写的,但因为它是 iPhone,它只是返回是否支持 iOS5 Retina 为是或否)

在普通". h"文件中添加: 布尔 IS_IPHONE5_RETINA(void) ;

在普通". m"文件中添加:


BOOL IS_IPHONE5_RETINA(void) {
 BOOL isiPhone5Retina = NO;
 if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
 if ([UIScreen mainScreen].scale == 2.0f) {
 CGSize result = [[UIScreen mainScreen] bounds].size;
 CGFloat scale = [UIScreen mainScreen].scale;
 result = CGSizeMake(result.width * scale, result.height * scale);

 if(result.height == 960){
//NSLog(@"iPhone 4, 4s Retina Resolution");
 }
 if(result.height == 1136){
//NSLog(@"iPhone 5 Resolution");
 isiPhone5Retina = YES;
 }
 } else {
//NSLog(@"iPhone Standard Resolution");
 }
 }
 return isiPhone5Retina;
}

原作者:

你可以使用自动布局功能和创建该设计的使用 iPhone 5屏幕分辨率而且同时它完全可以顺利 4"和 3.5"设备足够,但在这种情况下你应该有一个布局管理器的知识。

在 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)

原作者:
...