Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Xcode 5资源目录:如何以正确的大小自动拾取LaunchImage_Ios_Xcode5 - Fatal编程技术网

Ios Xcode 5资源目录:如何以正确的大小自动拾取LaunchImage

Ios Xcode 5资源目录:如何以正确的大小自动拾取LaunchImage,ios,xcode5,Ios,Xcode5,正如所建议的,在Interface Builder中,我已为“Image”属性的“LaunchImage.png”参数指定了一个全尺寸图像视图,在运行时由iOS关联 但在运行时,在任何设备(iPhone、iPad、带/不带视网膜)中,拾取的图像总是640×960像素大小的图像,因此忽略了其他大小的图像 有没有办法让iOS根据设备和分辨率自动选择正确的图像?是的,在XCode 5中有一种更简单的方法 单击Xcode常规选项卡 然后在下面滚动并查找启动图像。看到灰色的小箭头了吗?点击那个 现在,您

正如所建议的,在Interface Builder中,我已为“Image”属性的“LaunchImage.png”参数指定了一个全尺寸图像视图,在运行时由iOS关联

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


有没有办法让iOS根据设备和分辨率自动选择正确的图像?

是的,在XCode 5中有一种更简单的方法

  • 单击Xcode常规选项卡
  • 然后在下面滚动并查找启动图像。看到灰色的小箭头了吗?点击那个
  • 现在,您可以拖放特定设备的启动映像
  • 如果选择,还可以在iOS6和iOS7设备之间选择不同的启动映像
  • 对于每个设备和屏幕尺寸,将自动拾取正确的启动图像
  • 看看这些截图


    目前,我找到的唯一方法是在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"];
            }
        }
    }
    
    IPHONE、视网膜等的宏定义如下:

    #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)
    

    谢谢,这已经适用于启动映像功能。现在,我需要将启动图像作为背景放在自定义视图中,而不复制资产文件夹中的图像…您必须创建两个午餐图像,称它们为LaunchImage_iphone.png,LaunchImage_ipad.png。将它们添加到项目资源中。确保它们的尺寸适合每个设备,然后通过每个设备的故事板/代码添加它们。这是人类唯一的出路。