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

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

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


当前回答

我建议在你的应用程序中根据你的UI界面使用自动调整蒙版,这节省了很多麻烦,比为iPhone 4和5屏幕制作不同的UI更好。

其他回答

有时候(对于预storyboard应用程序),如果布局会有足够的不同,在viewController init中根据设备指定不同的xib是值得的(参见这个问题-你需要修改代码来处理iPhone 5),因为如果你需要不同的图形,再多的自动调整蒙版也不会起作用。

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

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

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


...

这对于针对旧iOS版本的应用程序非常有用。

在单例类中尝试下面的方法:

-(NSString *)typeOfDevice
    {
        if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
        {
            CGSize result = [[UIScreen mainScreen] bounds].size;
            if(result.height == 480)
            {
                return @"Iphone";
            }
            if(result.height == 568)
            {
                return @"Iphone 5";
            }
        }
        else{
            return @"Ipad";;
        }


        return @"Iphone";
    }

使用视图的自动布局功能。它将自动调整到所有分辨率。

为控制器名称后缀为~iphone或~ipad的控制器创建两个xib。在编译时,Xcode将根据设备取正确的xib。

使用大小类,如果你想为iPhone和iPad创建一个单独的xib,如果视图足够简单,可以移植到iPhone和iPad。

我建议在你的应用程序中根据你的UI界面使用自动调整蒙版,这节省了很多麻烦,比为iPhone 4和5屏幕制作不同的UI更好。

你可以手动检查屏幕大小来确定你在哪个设备上:

#define DEVICE_IS_IPHONE5 ([[UIScreen mainScreen] bounds].size.height == 568)

float height = DEVICE_IS_IPHONE5?568:480;
if (height == 568) {
    // 4"

} else {

    // 3"

}