Dav*_*vid 40 iphone objective-c frame ios uiscreen
因此,我使用最新版本的XCode创建了一个新项目,并尝试记录我的应用程序的屏幕大小(以确定UI的设备类型).我从iPhone 5运行了以下代码:
NSLog(@"%f", [[UIScreen mainScreen] bounds].size.height);
Run Code Online (Sandbox Code Playgroud)
这返回了480
,这是旧iPhone系列的屏幕尺寸.我在模拟器中试过,发生了同样的事情.我必须在项目中启用一些属性来识别屏幕大小吗?
这仅适用于5个以上的设备; 如果我在iPad上运行游戏,它会识别1024屏幕尺寸.
我知道这个代码在过去有效.我使用完全相同的方法做了一段时间的游戏,它没有检测屏幕大小的问题,但这是在XCode 4.x中构建的.
我正在使用自定义视图控制器,我在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;
}
Run Code Online (Sandbox Code Playgroud)
+ (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;
}
}
Run Code Online (Sandbox Code Playgroud)
Dav*_*vid 104
显然,iOS 完全依赖于iPhone 5+分辨率下的启动图像,以便让应用程序以该分辨率运行.
这个问题有两种解决方案:
1.使用资产目录
当您创建一个新项目时,会有一个称为资产目录的东西,它存储您的启动图像文件.将其中一个添加到您的项目和presto!
2.挖出一些旧文件
如果您见过世面的XCode了一段时间,你就会知道,在XCode中4.x版的后续版本中的一个,该应用程序会自动创建一个名为您的应用三个默认启动图像文件Default.png
,Default@2x.png
和Default-568h@2x.png
.你需要在你的应用这些文件,基本上只是黑色图像有关决议480x320
,960x640
和1136x640
,分别为(请注意,这些都是高x宽,不宽x高).
希望这可以帮助遇到这个荒谬问题的其他人.
归档时间: |
|
查看次数: |
30460 次 |
最近记录: |