Xcode 5和资产目录:如何引用LaunchImage?


102

我正在使用Xcode 5的资产目录,并且希望将其用LaunchImage作主视图的背景图像(一种非常常见的做法是使从“加载”到“加载”的过渡看起来很平滑)。

我想在资产目录中使用相同的条目来节省空间,而不必在两个不同的图像集中复制该图像。

但是,调用:

UIImage *image = [UIImage imageNamed:@"LaunchImage"]; //returns nil

Answers:


83

这是LaunchImage的(几乎)完整列表(不包括没有状态栏的iPad图像):

  • LaunchImage-568h@2x.png
  • LaunchImage-700-568h@2x.png
  • LaunchImage-700-Landscape@2x~ipad.png
  • LaunchImage-700-Landscape〜ipad.png
  • LaunchImage-700-Portrait@2x~ipad.png
  • LaunchImage-700-Portrait〜ipad.png
  • LaunchImage-700@2x.png
  • LaunchImage-Landscape@2x~ipad.png
  • LaunchImage-Landscape〜ipad.png
  • LaunchImage-Portrait@2x~ipad.png
  • LaunchImage-Portrait〜ipad.png
  • LaunchImage.png
  • LaunchImage@2x.png
  • LaunchImage-800-667h@2x.png(iPhone 6)
  • LaunchImage-800-Portrait-736h@3x.png(iPhone 6 Plus Portrait)
  • LaunchImage-800-Landscape-736h@3x.png(iPhone 6 Plus Landscape)
  • LaunchImage-1100-Portrait-2436h@3x.png(iPhone X Portrait)
  • LaunchImage-1100-Landscape-2436h@3x.png(iPhone X Landscape)

有人知道没有状态栏的iPad图像吗?
Mohamed Hafez 2014年

1
@Mohamed Hafez:Pichirichi实际上确实将它们包括在他的列表中。它们是LaunchImage-Portrait〜ipad.png,LaunchImage-Portrait @ 2x〜ipad.png,LaunchImage-Landscape〜ipad.png和LaunchImage-Landscape@2x~ipad.png。
John Jacecko 2014年

700和800是什么意思?
Sound Blaster 2014年

2
我抓住了它:这意味着iOS 7和8
Sound Blaster 2014年

4
令人难以置信的是,XCode会自动为这些图像资产创建一个文件名,并让您跳入箍圈以弄清楚如何直接访问它们……
T先生

67
- (NSString *)splashImageNameForOrientation:(UIInterfaceOrientation)orientation {
    CGSize viewSize = self.view.bounds.size;
    NSString* viewOrientation = @"Portrait";
    if (UIDeviceOrientationIsLandscape(orientation)) {
        viewSize = CGSizeMake(viewSize.height, viewSize.width);
        viewOrientation = @"Landscape";
    }

    NSArray* imagesDict = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"UILaunchImages"];
    for (NSDictionary* dict in imagesDict) {
        CGSize imageSize = CGSizeFromString(dict[@"UILaunchImageSize"]);
        if (CGSizeEqualToSize(imageSize, viewSize) && [viewOrientation isEqualToString:dict[@"UILaunchImageOrientation"]])
            return dict[@"UILaunchImageName"];
    }
    return nil;
}

1
效果很好。巧妙而优雅的方法来搜索主捆绑包的信息字典以获取可用的启动图像,然后选择分辨率匹配的图像!
iOSX 2015年

1
除非苹果改变了info.plist的结构,否则这是一个绝妙的主意,比我的想法更好,也有未来的希望。
2015年

1
这是一个非常聪明的解决方案。我的Xcode项目中有多个目标,仅使用LaunchImage字符串并不总是返回正确的图像。非常感谢。
Enrico Susatyo 2015年

3
很棒的主意。但是不适用于状态栏不透明的屏幕。因此需要将self.view.bounds.size更改为[UIScreen mainScreen] .bounds.size
RamaKrishna Chunduri 2015年

1
很好的解决方案。需进行少量编辑:从UIInterfaceOrientation到UIDeviceOrientation进行了隐式转换。使用UIInterfaceOrientationIsLandscape()代替。
Almog C

53

LaunchImages很特殊,实际上不是设备上的资产目录。如果您使用iFunBox / iExplorer / etc(或在模拟器上,或在构建目录中),则可以看到最终名称,然后编写代码以使用它们-例如。对于仅iOS7的iPhone专用项目,这将设置正确的启动图像:

NSString *launchImage;
if  ((UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) &&
     ([UIScreen mainScreen].bounds.size.height > 480.0f)) {
    launchImage = @"LaunchImage-700-568h";
} else {
    launchImage = @"LaunchImage-700";
}

[self.launchImageView setImage:[UIImage imageNamed:launchImage]];

我把它放到viewDidLoad中。

这并不是很理想,如果Apple给我们提供一个不错的API来做到这一点,那就太好了。


2
这对我有用,但是我真的希望有一种引用启动映像的简单方法。
Zorayr

也许已在Xcode 5.0.2中修复-参见下文,对我来说似乎很简单,只需引用“ LaunchImage.png”
Adam

1
@Adam如果那是真的,会很乐意!我刚在iphone5s / xcode5.0.2 / ios7.0.4上尝试过,[UIImage imageNamed:@“ LaunchImage.png”]给了我零分。
JosephH

@JosephH嗯。也许需要一个新创建的项目?这是在Xcode 5.0.2中创建的项目,唯一的默认更改是“ disabled ARC”。效果很好:)。我会看看是否还能找到其他东西,但是无法想到我可能会改变的地方
亚当(Adam)

我正在尝试类似的代码,但使用的是“ Default”和“ Default-568h”(原始资源文件名)。在查看导出的应用程序捆绑包之后,我意识到Xcode将名称更改为“ LaunchImage-700 *”。
Nicolas Miari 2014年

27

我的应用程序当前仅支持iOS 7及更高版本。

这就是我从资产目录中引用启动映像的方式:

NSDictionary *dict = @{@"320x480" : @"LaunchImage-700",
                       @"320x568" : @"LaunchImage-700-568h",
                       @"375x667" : @"LaunchImage-800-667h",
                       @"414x736" : @"LaunchImage-800-Portrait-736h"};
NSString *key = [NSString stringWithFormat:@"%dx%d",
    (int)[UIScreen mainScreen].bounds.size.width,
    (int)[UIScreen mainScreen].bounds.size.height];
UIImage *launchImage = [UIImage imageNamed:dict[key]];

如果要支持旧的iOS版本,则可以添加更多的键值对。


1
请注意,从iOS 8开始,UIScreen.mainScreen.bounds具体取决于当前界面的方向。参见stackoverflow.com/a/24153540/158525
Jean Regisser 2014年

1
正是由于这个,我一直在寻找!
Joseph Paterson 2014年

感谢htis,有什么方法可以访问应用程序图标?
AsifHabib 2015年

10

这里是基于上面的Cherpak Evgeny提供的解决方案的UIImage类别。

UIImage + SplashImage.h

#import <UIKit/UIKit.h>

/**
 * Category on `UIImage` to access the splash image.
 **/
@interface UIImage (SplashImage)

/**
 * Return the name of the splash image for a given orientation.
 * @param orientation The interface orientation.
 * @return The name of the splash image.
 **/
+ (NSString *)si_splashImageNameForOrientation:(UIInterfaceOrientation)orientation;

/**
 * Returns the splash image for a given orientation.
 * @param orientation The interface orientation.
 * @return The splash image.
 **/
+ (UIImage*)si_splashImageForOrientation:(UIInterfaceOrientation)orientation;

@end

UIImage + SplashImage.m

#import "UIImage+SplashImage.h"

@implementation UIImage (SplashImage)

+ (NSString *)si_splashImageNameForOrientation:(UIInterfaceOrientation)orientation
{
    CGSize viewSize = [UIScreen mainScreen].bounds.size;

    NSString *viewOrientation = @"Portrait";

    if (UIDeviceOrientationIsLandscape(orientation))
    {
        viewSize = CGSizeMake(viewSize.height, viewSize.width);
        viewOrientation = @"Landscape";
    }

    NSArray* imagesDict = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"UILaunchImages"];

    for (NSDictionary *dict in imagesDict)
    {
        CGSize imageSize = CGSizeFromString(dict[@"UILaunchImageSize"]);
        if (CGSizeEqualToSize(imageSize, viewSize) && [viewOrientation isEqualToString:dict[@"UILaunchImageOrientation"]])
            return dict[@"UILaunchImageName"];
    }
    return nil;
}

+ (UIImage*)si_splashImageForOrientation:(UIInterfaceOrientation)orientation
{
    NSString *imageName = [self si_splashImageNameForOrientation:orientation];
    UIImage *image = [UIImage imageNamed:imageName];
    return image;
}

@end

imageNamed将映像推送到系统缓存,但是启动映像有时非常大,因此它一直在内存中,直到缓存将其刷新为止
Igor Palaguta 2015年

9

@codeman的答案已针对Swift 1.2更新:

func splashImageForOrientation(orientation: UIInterfaceOrientation, size: CGSize) -> String? {
    var viewSize        = size
    var viewOrientation = "Portrait"

    if UIInterfaceOrientationIsLandscape(orientation) {
        viewSize        = CGSizeMake(size.height, size.width)
        viewOrientation = "Landscape"
    }

    if let imagesDict = NSBundle.mainBundle().infoDictionary as? [String: AnyObject] {
        if let imagesArray = imagesDict["UILaunchImages"] as? [[String: String]] {
            for dict in imagesArray {
                if let sizeString = dict["UILaunchImageSize"], let imageOrientation = dict["UILaunchImageOrientation"] {
                    let imageSize = CGSizeFromString(sizeString)
                    if CGSizeEqualToSize(imageSize, viewSize) && viewOrientation == imageOrientation {
                        if let imageName = dict["UILaunchImageName"] {
                            return imageName
                        }
                    }
                }
            }
        }
    }

    return nil

}

调用它并支持iOS 8的旋转:

override func viewWillAppear(animated: Bool) {
    if let img = splashImageForOrientation(UIApplication.sharedApplication().statusBarOrientation, size: self.view.bounds.size) {
        backgroundImage.image = UIImage(named: img)
    }
}

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
    let orientation = size.height > size.width ? UIInterfaceOrientation.Portrait : UIInterfaceOrientation.LandscapeLeft

    if let img = splashImageForOrientation(orientation, size: size) {
        backgroundImage.image = UIImage(named: img)
    }

}

正是我需要的,谢谢!


7

我只是写了一个通用方法来获取iPhone和iPad的启动图像名称(横向,纵向),它对我有用,希望它也对您有帮助。我是在其他SO答案的帮助下编写的,感谢@Pichirichi的整个列表。

+(NSString*)getLaunchImageName
{

 NSArray* images= @[@"LaunchImage.png", @"LaunchImage@2x.png",@"LaunchImage-700@2x.png",@"LaunchImage-568h@2x.png",@"LaunchImage-700-568h@2x.png",@"LaunchImage-700-Portrait@2x~ipad.png",@"LaunchImage-Portrait@2x~ipad.png",@"LaunchImage-700-Portrait~ipad.png",@"LaunchImage-Portrait~ipad.png",@"LaunchImage-Landscape@2x~ipad.png",@"LaunchImage-700-Landscape@2x~ipad.png",@"LaunchImage-Landscape~ipad.png",@"LaunchImage-700-Landscape~ipad.png"];

UIImage *splashImage;

if ([self isDeviceiPhone])
{
    if ([self isDeviceiPhone4] && [self isDeviceRetina])
    {
        splashImage = [UIImage imageNamed:images[1]];
        if (splashImage.size.width!=0)
            return images[1];
        else
            return images[2];
    }
    else if ([self isDeviceiPhone5])
    {
        splashImage = [UIImage imageNamed:images[1]];
        if (splashImage.size.width!=0)
            return images[3];
        else
            return images[4];
    }
    else
        return images[0]; //Non-retina iPhone
}
else if ([[UIDevice currentDevice] orientation]==UIDeviceOrientationPortrait || [[UIDevice currentDevice] orientation] == UIDeviceOrientationPortraitUpsideDown)//iPad Portrait
{
    if ([self isDeviceRetina])
    {
        splashImage = [UIImage imageNamed:images[5]];
        if (splashImage.size.width!=0)
            return images[5];
        else
            return images[6];
    }
    else
    {
        splashImage = [UIImage imageNamed:images[7]];
        if (splashImage.size.width!=0)
            return images[7];
        else
            return images[8];
    }

}
else
{
    if ([self isDeviceRetina])
    {
        splashImage = [UIImage imageNamed:images[9]];
        if (splashImage.size.width!=0)
            return images[9];
        else
            return images[10];
    }
    else
    {
        splashImage = [UIImage imageNamed:images[11]];
        if (splashImage.size.width!=0)
            return images[11];
        else
            return images[12];
    }
 }
}

其他实用方法是

+(BOOL)isDeviceiPhone
{
 if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
 {
     return TRUE;
 }

 return FALSE;
}

+(BOOL)isDeviceiPhone4
{
 if ([[UIScreen mainScreen] bounds].size.height==480)
    return TRUE;

 return FALSE;
}


+(BOOL)isDeviceRetina
{
 if ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] &&
    ([UIScreen mainScreen].scale == 2.0))        // Retina display
 {
    return TRUE;
 } 
 else                                          // non-Retina display
 {
     return FALSE;
 }
}


+(BOOL)isDeviceiPhone5
{
 if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone && [[UIScreen mainScreen] bounds].size.height>480)
 {
    return TRUE;
 }
 return FALSE;
}

实际上,有这个代码略有错误的isDeviceiPhone4:[UIScreen mainScreen]界限现在改变根据你是什么方位的iOS 8下你需要显式地将其转换为一个人像范围做这样的事情:[screen.coordinateSpace convertRect:screen.bounds toCoordinateSpace:screen.fixedCoordinateSpace],但要请务必先测试您是否在iOS 8上,否则会崩溃。
Mohamed Hafez 2014年

感谢@Hafez指出这一点,我将在iOS 8上对其进行测试并尽快更新答案。
zaheer 2014年

7

瑟帕克·叶夫根尼的答案的迅捷版本:

    func splashImageForOrientation(orientation: UIInterfaceOrientation) -> String {
        var viewSize = self.view.bounds.size
        var viewOrientation = "Portrait"
        if UIInterfaceOrientationIsLandscape(orientation) {
           viewSize = CGSizeMake(viewSize.height, viewSize.width)
           viewOrientation = "Landscape"
        }
        let imagesDict = NSBundle.mainBundle().infoDictionary as Dictionary<NSObject,AnyObject>!
        let imagesArray = imagesDict["UILaunchImages"] as NSArray
        for dict in imagesArray {
            let dictNSDict = dict as NSDictionary
            let imageSize = CGSizeFromString(dictNSDict["UILaunchImageSize"] as String)
            if CGSizeEqualToSize(imageSize, viewSize) && viewOrientation == (dictNSDict["UILaunchImageOrientation"] as String) {
                return dictNSDict["UILaunchImageName"] as String
            }
        }
        return ""
    }

5

遵循@Pichirich的回答,我在InterfaceBuilder中引用了我的launchimage:

“ LaunchImage.png”

...并且使用Xcode 5.0.2,它会自动从资产目录中直接提取适当的图像。

这就是我所期望的-除了苹果公司的恶意地将“ Default.png”重命名为“ LaunchImage.png”之外:


还应该注意一件事。这些图像的大小应完全与Apple建议的大小相同(例如,iOS 5-6 iPhone 3GS的LaunchImage为320x480),否则将nil在初始化后进行
Alexander Kostiev 2014年

3

文档中有明确说明:

“资产目录中的每个集合都有一个名称您可以使用该名称以编程方式加载集合中包含的任何单个图像。要加载图像,请调用UIImage:ImageNamed:方法,并传递包含该图像的集合的名称。 。”

使用Pichirichi的列表有助于解决这种矛盾。


1
注意“集合的名称”部分。查看我的资产目录,我有一个名为“ LaunchImage”的集合。然后,要加载启动图像,我打电话:UIImageView *myView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"LaunchImage"]];很棒!
leanne

1
无需使用Pichirichi的列表(认为这仍然是很棒的信息)-只需使用资产目录的“集合”的名称即可。
leanne

2
好吧,对我来说,这不适用于Xcode 6.0.1和iOS 8上的LaunchImage。LaunchImage似乎很特殊,因为这些图像最终分别出现在已编译的应用程序捆绑包中,并且不保留在xcasset捆绑包文件夹中。
auco 2014年

如果有两个包含相同名称的集合的不同资产目录,会发生什么?怎么[UIImage imageNamed:..]知道选哪一个呢?
卡洛斯·P

对我来说,这是行不通的,XCode 6.0.1 iOS 7 iPod Touch
开发人员

3

只需一行代码即可轻松访问启动图像。

 UIImage *myAppsLaunchImage = [UIImage launchImage];

请按照以下给出的步骤实现上述功能。

步骤1.UIImage通过创建类别来扩展类并向其添加以下方法。

+ (UIImage *)launchImage {
    NSDictionary *dOfLaunchImage = [NSDictionary dictionaryWithObjectsAndKeys:
                                    @"LaunchImage-568h@2x.png",@"568,320,2,8,p", // ios 8 - iphone 5 - portrait
                                    @"LaunchImage-568h@2x.png",@"568,320,2,8,l", // ios 8 - iphone 5 - landscape
                                    @"LaunchImage-700-568h@2x.png",@"568,320,2,7,p", // ios 7 - iphone 5 - portrait
                                    @"LaunchImage-700-568h@2x.png",@"568,320,2,7,l", // ios 7 - iphone 5 - landscape
                                    @"LaunchImage-700-Landscape@2x~ipad.png",@"1024,768,2,7,l", // ios 7 - ipad retina - landscape
                                    @"LaunchImage-700-Landscape~ipad.png",@"1024,768,1,7,l", // ios 7 - ipad regular - landscape
                                    @"LaunchImage-700-Portrait@2x~ipad.png",@"1024,768,2,7,p", // ios 7 - ipad retina - portrait
                                    @"LaunchImage-700-Portrait~ipad.png",@"1024,768,1,7,p", // ios 7 - ipad regular - portrait
                                    @"LaunchImage-700@2x.png",@"480,320,2,7,p", // ios 7 - iphone 4/4s retina - portrait
                                    @"LaunchImage-700@2x.png",@"480,320,2,7,l", // ios 7 - iphone 4/4s retina - landscape
                                    @"LaunchImage-Landscape@2x~ipad.png",@"1024,768,2,8,l", // ios 8 - ipad retina - landscape
                                    @"LaunchImage-Landscape~ipad.png",@"1024,768,1,8,l", // ios 8 - ipad regular - landscape
                                    @"LaunchImage-Portrait@2x~ipad.png",@"1024,768,2,8,p", // ios 8 - ipad retina - portrait
                                    @"LaunchImage-Portrait~ipad.png",@"1024,768,1,8,l", // ios 8 - ipad regular - portrait
                                    @"LaunchImage.png",@"480,320,1,7,p", // ios 6 - iphone 3g/3gs - portrait
                                    @"LaunchImage.png",@"480,320,1,7,l", // ios 6 - iphone 3g/3gs - landscape
                                    @"LaunchImage@2x.png",@"480,320,2,8,p", // ios 6,7,8 - iphone 4/4s - portrait
                                    @"LaunchImage@2x.png",@"480,320,2,8,l", // ios 6,7,8 - iphone 4/4s - landscape
                                    @"LaunchImage-800-667h@2x.png",@"667,375,2,8,p", // ios 8 - iphone 6 - portrait
                                    @"LaunchImage-800-667h@2x.png",@"667,375,2,8,l", // ios 8 - iphone 6 - landscape
                                    @"LaunchImage-800-Portrait-736h@3x.png",@"736,414,3,8,p", // ios 8 - iphone 6 plus - portrait
                                    @"LaunchImage-800-Landscape-736h@3x.png",@"736,414,3,8,l", // ios 8 - iphone 6 plus - landscape
                                    nil];
    NSInteger width = ([UIScreen mainScreen].bounds.size.width>[UIScreen mainScreen].bounds.size.height)?[UIScreen mainScreen].bounds.size.width:[UIScreen mainScreen].bounds.size.height;
    NSInteger height = ([UIScreen mainScreen].bounds.size.width>[UIScreen mainScreen].bounds.size.height)?[UIScreen mainScreen].bounds.size.height:[UIScreen mainScreen].bounds.size.width;
    NSInteger os = [[[[[UIDevice currentDevice] systemVersion] componentsSeparatedByString:@"."] objectAtIndex:0] integerValue];
    NSString *strOrientation = UIDeviceOrientationIsLandscape([[UIDevice currentDevice] orientation])?@"l":@"p";
    NSString *strImageName = [NSString stringWithFormat:@"%li,%li,%li,%li,%@",width,height,(NSInteger)[UIScreen mainScreen].scale,os,strOrientation];
    UIImage *imageToReturn = [UIImage imageNamed:[dOfLaunchImage valueForKey:strImageName]];
    if([strOrientation isEqualToString:@"l"] && [strImageName rangeOfString:@"Landscape"].length==0) {
        imageToReturn = [UIImage rotate:imageToReturn orientation:UIImageOrientationRight];
    }
    return imageToReturn;
}

第2步。上述方法应该也可以通过将以下代码添加到UIImage

static inline double radians (double degrees) {return degrees * M_PI/180;}

+ (UIImage *)rotate:(UIImage*)src orientation:(UIImageOrientation) orientation {
    UIGraphicsBeginImageContext(src.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    if (orientation == UIImageOrientationRight) {
        CGContextRotateCTM (context, radians(90));
    } else if (orientation == UIImageOrientationLeft) {
        CGContextRotateCTM (context, radians(-90));
    } else if (orientation == UIImageOrientationDown) {
        // NOTHING
    } else if (orientation == UIImageOrientationUp) {
        CGContextRotateCTM (context, radians(90));
    }
    [src drawAtPoint:CGPointMake(0, 0)];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;
}

很好的答案,谢谢!
dortzur 2015年

1
iPhone X的启动图像现在叫什么名字?
RPM

2

我意识到这不一定是每个人的最佳解决方案,但是最简单的方法(并且最不容易出错,恕我直言,恕我直言)是通过在Images.xcassets目录中单独输入一个条目。我叫它SplashImage

当您添加新条目时,请确保不要选择“新启动映像”作为选项。而是选择通用的“新映像集”。接下来,打开检查器并选择相关选项。如果像我以前那样仅针对视网膜设备进行构建,则可以选择以下选项:

图像检查器

这将为您留下四个条目(iPhone 4S,iPhone 5(s,c),iPhone 6和iPhone 6 Plus)。

图片

图像对应的文件如下:

| Resolution (Xcode entry) | Launch Image name   |   Device         |
|--------------------------|---------------------|------------------|
| 1x                       | Default-750.png     | iPhone 6         |
| 2x                       | Default@2x.png      | iPhone 4S        |
| Retina 4 2x              | Default-568h@2x.png | iPhone 5, 5s, 5c |
| 3x                       | Default-1242.png    | iPhone 6 Plus    |

当然,完成此操作后,您可以简单地使用 [UIImage imageNamed:@"SplashImage"]


1
有趣的想法,但在iPhone 6上不起作用。它仍然在iPhone 6模拟器上加载Default@2x.png图像。
消极的

使用这种方法,您还应该注意用于横向定位的启动图像集。
berec 2014年


0

更新到最新的Swift语法(Swift 5)

   func splashImageForOrientation(orientation: UIInterfaceOrientation) -> String? {

    var viewSize = screenSize
    var viewOrientation = "Portrait"
    if orientation.isLandscape {
        viewSize = CGSize(width: viewSize.height, height: viewSize.width)
        viewOrientation = "Landscape"
    }
    if let infoDict = Bundle.main.infoDictionary, let launchImagesArray = infoDict["UILaunchImages"] as? [Any] {
        for launchImage in launchImagesArray {
            if let launchImage = launchImage as? [String: Any], let nameString = launchImage["UILaunchImageName"] as? String, let sizeString = launchImage["UILaunchImageSize"] as? String, let orientationString = launchImage["UILaunchImageOrientation"] as? String {
                let imageSize = NSCoder.cgSize(for: sizeString)
                if imageSize.equalTo(viewSize) && viewOrientation == orientationString {
                    return nameString
                }
            }
        }
    }
    return nil
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.