获取正确的 LaunchImage 而不是 iPhone4

Posted

技术标签:

【中文标题】获取正确的 LaunchImage 而不是 iPhone4【英文标题】:Get the right LaunchImage not iPhone4's 【发布时间】:2016-05-27 04:16:47 【问题描述】:

我正在通过 [UIImage imageNamed:@"LaunchImage"] 访问 LaunchImage,但无论如何它总是给我 640x960。它显然似乎没有检测到我正在使用哪部手机,它只是抛出 640x960。

我可以检查屏幕尺寸并为每个设备设置特定的图像名称,但这并不理想。必须有一种简单的方法来完成这项工作。 有人知道吗?

【问题讨论】:

试试***.com/questions/32062621/… 我想你甚至没有明白我的问题是什么。我在问如何以编程方式轻松访问每个设备的启动图像,而无需检查屏幕尺寸。 找到一个关于这个“问题”的博客,结果证明这是不可能的。即将删除此问题。 不会手动将图像添加到启动屏幕并执行自动布局帮助? @durazno 你没有在听我说话……那已经完成了,我在问别的问题。真的应该早点删除这个问题我不能因为其他人发布了无意义的答案.. 【参考方案1】:

关键在于Info.plist 文件包含有关使用哪个启动图像的信息。下面这个方法会从Info.plist 中找到那个名字,然后你只需要从[UIImage imageNamed:@""] 方法中查询它。

- (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"];
    

    if (imagesDict.count > 0) 
        return [imagesDict firstObject][@"UILaunchImageName"];
    
    return nil;

【讨论】:

当我已经特别提到我知道怎么做时,你为什么要给我这个答案。我只是想知道是否可以在不必检查正在使用的设备的情况下做到这一点。 为什么我们不能再次检查尺寸? 你还没看我的问题..?我从来没有说过我们不能,我们绝对可以,我知道怎么做。我说得很清楚,如果可能的话,我正在寻找一种跳过那部分的方法。答案是我们做不到。【参考方案2】:

参考这个网址:

Launch screens supporting ios6 and iOS7 - forced to splash screen

您将在 Assets.xcassets 中添加启动屏幕: 你看到的图像大小如下图:

【讨论】:

以上是关于获取正确的 LaunchImage 而不是 iPhone4的主要内容,如果未能解决你的问题,请参考以下文章

iOS获取app图标和启动图片名字(AppIcon and LaunchImage's name)

对于 iOS LaunchImage,我需要所有图像吗?

LaunchImage 没有运行我的自定义图像

发布项目时,获取项目而不是尝试将 ID 推回结果是不是是正确的形式?

AssetCatalog LaunchImage 仅横向 - iPhone 4S/5/5S 未显示

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