因此,我用最新版本的XCode创建了一个新项目,并try 记录我的应用程序的屏幕大小(以确定UI的设备类型).我在iPhone 5上运行了以下代码:

NSLog(@"%f", [[UIScreen mainScreen] bounds].size.height);

返回480,这是旧iPhone系列的屏幕大小.我在模拟器里试过,同样的事情发生了.我是否需要在项目中启用一些属性才能识别屏幕大小?

这只发生在5+个设备上;如果我在iPad上运行游戏,它会识别1024屏幕大小.

我知道这个代码在过go 是有效的.不久前,我用完全相同的方法制作了一个游戏,它检测屏幕大小没有问题,但这是在XCode 4中构建的.十、

其他信息:

我使用的是自定义视图控制器,我在App Delegate中使用以下代码创建该控制器:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    if([Global getDevice] == 1)
    {
        //iPhone 5+
        self.window.rootViewController = [[FivePlus alloc] initWithNibName:nil bundle:nil];

    }
    else if([Global getDevice] == 2)
    {
        //iPhone 4S-
        self.window.rootViewController = [[FourSMinus alloc] initWithNibName:nil bundle:nil];
    }
    else
    {
        //iPad
        self.window.rootViewController = [[iPad alloc] initWithNibName:nil bundle:nil];
    }

    [[self window] makeKeyAndVisible];

    // Override point for customization after application launch.
    return YES;
}

来自全局的getDevice方法.h:

+ (int)getDevice
{
if([[UIScreen mainScreen] bounds].size.height == 568 || [[UIScreen mainScreen] bounds].size.width == 568)
    {
        return 1;
    }
    else if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    {
        return 3;
    }
    else
    {
        return 2;
    }
}

推荐答案

显然,iOS依靠iPhone 5+分辨率的发布图像来让应用程序以该分辨率运行.

这个问题有两种解决方案:

1. Use Asset Catalogs

当你创建一个新项目时,有一个叫做assets资源 目录的东西,它存储你的启动图像文件.将其中一个添加到您的项目中,然后开始!

2. Dig out some old files

如果您对XCode已经有一段时间了,那么在XCode 4的一个更高版本中就会知道这一点.x、 应用程序会自动为你的应用程序创建三个名为Default.pngDefault@2x.pngDefault-568h@2x.png的默认启动图像文件.你的应用程序中需要这些文件,它们基本上只是分别具有480x320960x6401136x640分辨率的黑色图像(请注意,它们是HxW格式,而不是WxH格式).

  1. 将这些文件添加到"支持文件"组
  2. 转到项目属性并从启动图像部分 Select "不使用assets资源 目录"
  3. 删除assets资源 目录.

希望这能帮助其他遇到这个荒谬问题的人.

Objective-c相关问答推荐

Objective c 判断文本字段是否为空

Objective-C (cocoa) 等价于python的endswith/beginswith

UITableView - Select 了哪一行?

Objective-C:如何使用 BOOL 类型的参数调用 performSelector?

将子视图添加到 UIButton

try 标记应用程序图标但未获得用户标记应用程序的权限:iOS 8 Xcode 6

Crashlytics iOS - 记录捕获的异常

使用 Objective-C 查找 IMEI 号码

[NSNull null] 和 nil 有什么区别?

如何确定 UICollectionView flowLayout 中单元格之间的间距

Cocoa 与 Cocoa Touch - 有什么区别?

如何在 Objective-C (iOS) 中判断 NaN 值

UITextField:键盘出现 timeshift 动视图

从 iPhone 设备查找当前国家

自定义 colored颜色 我的 UIActivityIndi​​catorView

如何在 UIAlertController 中添加 textField?

允许用户从 UILabel 中 Select 文本进行复制

使 UILabel 的文本加粗

UICollectionView:如何检测滚动何时停止

UITableViewCell中的文本居中对齐问题