首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xcode5和资产目录:如何引用LaunchImage?

Xcode5和资产目录:如何引用LaunchImage?
EN

Stack Overflow用户
提问于 2013-10-01 11:39:53
回答 14查看 35.2K关注 0票数 102

我使用的是Xcode5的Asset Catalog,我想使用我的LaunchImage作为主视图的背景图像(这是一种非常常见的做法,可以让从“加载”到“加载”的转换看起来很流畅)。

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

但是,调用:

代码语言:javascript
复制
UIImage *image = [UIImage imageNamed:@"LaunchImage"]; //returns nil
EN

回答 14

Stack Overflow用户

发布于 2013-11-18 18:11:27

这是(几乎)完整的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 (横向6)
  • LaunchImage-800-Portrait-736h@3x.png (iPhone 6 Plus Landscape)
  • LaunchImage-1100-Portrait-2436h@3x.png (iPhone 6 Plus Portrait)
  • LaunchImage-1100-Landscape-2436h@3x.png (iPhone X IPhone)
票数 83
EN

Stack Overflow用户

发布于 2015-01-06 19:43:29

代码语言:javascript
复制
- (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;
}
票数 67
EN

Stack Overflow用户

发布于 2013-10-10 00:05:15

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

代码语言:javascript
复制
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中。

这真的不是很理想,如果苹果能给我们一个很好的API来做这件事就太好了。

票数 52
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19107543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档