新的iPhone 5屏幕有新的纵横比和新的分辨率(640 x 1136像素)。

开发新的应用程序或将现有应用程序转换到新的屏幕尺寸需要什么?

我们应该记住什么,使应用程序“通用”的旧显示器和新的宽屏纵横比?


当前回答

你可以添加以下代码:

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
        if ([[UIScreen mainScreen] respondsToSelector: @selector(scale)]) {
            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 Resolution");
            }
            if(result.height == 1136) {
              NSLog(@"iPhone 5 Resolution");
            }
        }
        else{
            NSLog(@"Standard Resolution");
        }
    }

其他回答

使用xCode 5,在项目>General上选择“迁移到资产目录”。

然后使用“Show in finder”找到你的启动图像,你可以模拟编辑它为640x1136,然后拖到资产目录,如下图所示。

确保iOS7和iOS6 R4部分都有一个640x1136的图像。下次你启动应用程序时,黑条将消失,你的应用程序将使用4英寸的屏幕

这是一个真正的通用代码,你可以创建3个不同的故事板:

设置你的项目通用模式,用iPhone5 storyboard设置你的主故事iPhone,用ipad target storyboard设置ipad main,现在为iPhone添加新的storyboard target,并修改iPhone 4s或更少的分辨率,现在实现你的appdelegate。m

iPhone4/4s (3/ 3g是一样的)一个iPhone5,并使项目通用,与一个新的Storyboard目标为iPad,现在在AppDelegate。在didFinishLaunching下添加以下代码:

    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
        UIStoryboard *storyBoard;

        CGSize result = [[UIScreen mainScreen] bounds].size;
        CGFloat scale = [UIScreen mainScreen].scale;
        result = CGSizeMake(result.width *scale, result.height *scale);

//----------------HERE WE SETUP FOR IPHONE4/4s/iPod----------------------

        if(result.height == 960){
            storyBoard = [UIStoryboard storyboardWithName:@"iPhone4_Storyboard" bundle:nil];
            UIViewController *initViewController = [storyBoard instantiateInitialViewController];
            [self.window setRootViewController:initViewController];
        }

//----------------HERE WE SETUP FOR IPHONE3/3s/iPod----------------------

        if(result.height == 480){
            storyBoard = [UIStoryboard storyboardWithName:@"iPhone4_Storyboard" bundle:nil];
            UIViewController *initViewController = [storyBoard instantiateInitialViewController];
            [self.window setRootViewController:initViewController];
        }
    }

        return YES;
 }

所以你已经为iPhone 3/ 3g /4/4s/5所有一代的iPod和所有类型的iPad创建了一个通用应用程序

记住将所有IMG与myImage.png和myImage@2x.png集成

唯一真正需要做的事情是在应用程序资源中添加一个名为“Default-568h@2x.png”的启动图像,在一般情况下(如果你足够幸运)应用程序将正常工作。

如果应用程序不处理触摸事件,那么确保键窗口有适当的大小。解决方法是设置适当的框架:

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

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

通过xib .........很容易迁移iPhone5和iPhone4

UIViewController *viewController3;
if ([[UIScreen mainScreen] bounds].size.height == 568)
{
    UIViewController *viewController3 = [[[mainscreenview alloc] initWithNibName:@"iphone5screen" bundle:nil] autorelease];               
}    
else
{
     UIViewController *viewController3 = [[[mainscreenview alloc] initWithNibName:@"iphone4screen" bundle:nil] autorelease];
}

你可以使用自动布局功能,使用iPhone 5屏幕分辨率创建设计,它适用于4英寸和3.5英寸设备,但在这种情况下,你应该有足够的布局管理器知识。