Xcode 5 Asset Catalog:如何自动选择正确大小的 LaunchImage [英] Xcode 5 Asset Catalog: How to automatically pick LaunchImage at correct size

查看:26
本文介绍了Xcode 5 Asset Catalog:如何自动选择正确大小的 LaunchImage的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

按照此处的建议,在界面生成器中我已将图像"属性的LaunchImage.png"参数分配给全尺寸图像查看,在运行时由 iOS 关联.

As suggested here, in Interface Builder i've assigned to a full size Image View the "LaunchImage.png" parameter for the "Image" attribute, being associated at runtime by iOS.

但在运行时,在任何设备(iPhone、iPad,带/不带视网膜)中,拾取的图像始终是 640 × 960 像素大小的图像,因此忽略其他尺寸.

But at runtime, in any device (iPhone, iPad, with/without retina), the image picked is always the 640 × 960 pixels size image, thus ignoring other sizes.

有什么方法可以让 iOS 根据设备和分辨率自动选择正确的图像?

Is there any way to make iOS automatically picking the right image base on device and resolution?

推荐答案

目前,我发现的唯一方法是在代码中手动处理 LaunchImage.png:

For now, the only method i've found is to handle manually in code the LaunchImage.png:

self.splashImage.contentMode = UIViewContentModeScaleAspectFit;

if (IS_IPHONE())
{
    if (!IS_RETINA)
    {
        self.splashImage.image = [UIImage imageNamed:@"LaunchImage.png"];
    }
    else
    {
        if (IS_PHONEPOD5())
        {
            self.splashImage.image = [UIImage imageNamed:@"LaunchImage-568h@2x.png"];  
        }
        else
        {
            self.splashImage.image = [UIImage imageNamed:@"LaunchImage@2x.png"];
        }
    }

}
else if (IS_IPAD())
{
    if ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait)
    {
        if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
        {
            if (!IS_RETINA)
                self.splashImage.image = [UIImage imageNamed:@"LaunchImage-700-Portrait~ipad"];
            else
                self.splashImage.image = [UIImage imageNamed:@"LaunchImage-700-Portrait@2x~ipad"];

        }
        else
        {
            if (!IS_RETINA)
                self.splashImage.image = [UIImage imageNamed:@"LaunchImage-Portrait~ipad"];
            else
                self.splashImage.image = [UIImage imageNamed:@"LaunchImage-Portrait@2x~ipad"];
        }
    }
    else // landscape
    {
        if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
        {
            if (!IS_RETINA)
                self.splashImage.image = [UIImage imageNamed:@"LaunchImage-700-Landscape~ipad"];
            else
                self.splashImage.image = [UIImage imageNamed:@"LaunchImage-700-Landscape@2x~ipad.png"];
        }
        else
        {
            if (!IS_RETINA)
                self.splashImage.image = [UIImage imageNamed:@"LaunchImage-Landscape~ipad"];
            else
                self.splashImage.image = [UIImage imageNamed:@"LaunchImage-Landscape@2x~ipad"];
        }
    }
}

其中 IS_IPHONE、IS_RETINA 等是宏定义为:

where IS_IPHONE, IS_RETINA, etc. are macro defined as:

#define IS_PHONEPOD5() ([UIScreen mainScreen].bounds.size.height == 568.0f && [UIScreen mainScreen].scale == 2.f && UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)   
#define IS_RETINA ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] && ([UIScreen mainScreen].scale == 2.0))

#define IS_IPHONE() (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
#define IS_IPAD() (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#define SYSTEM_VERSION_EQUAL_TO(v)                  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
#define SYSTEM_VERSION_GREATER_THAN(v)              ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN(v)                 ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v)     ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)

这篇关于Xcode 5 Asset Catalog:如何自动选择正确大小的 LaunchImage的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆