iOS 获取 APP 的 Launch Image

http://www.cocoachina.com/ios/20151027/13780.html

作者:里脊串 授权本站转载。

启动图(LaunchImage)的管理其实在iOS开始中算比较简单的了,尤其是Xcode引入了xcassets之后,完全是傻瓜式的操作。但是有的时候我们还是需要在Launch Image上做文章。

LaunchImage在APP初始化完之后会立即消失并显示APP的界面 但是有的时候我们不希望它这么快就消失(比如有的人希望有个过渡效果 有的人希望等某些设置或者数据加载完之后再消失) 这也很简单 我们只要自己把LaunchImage再显示出来并且置顶就OK了

比如下面这样

不过我们配置了那么多适用于不同屏幕分辨率的LaunchImage 如何获取适合于当前屏幕分辨率的LaunchImage呢?

普通的办法是 把所有LaunchImage加入到工程并根据屏幕分辨率来命名 比如(640_960.png 640_1136.png …) 然后在程序中用代码拼接出对应的文件名 并引用

但是这种办法比较原始 而且万一以后苹果又出了一些其他分辨率的设备 或者启动图发生变化的时候 又需要人工的修改工程配置 不太好 而且还需要多占一份资源(APP的容量又变大啦)

而stackflow上的Cherpak Evgeny分享了一个更好的办法 直接读取NSBundle中的设置 即可获取当前适用的LaunchImage

我以上面的图为例写了个演示代码


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

CGSize viewSize = self.window.bounds.size;

NSString *viewOrientation = @"Portrait";    //横屏请设置成 @"Landscape"

NSString *launchImage = nil;

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"]])

    {

        launchImage = dict[@"UILaunchImageName"];

    }

}

UIImageView *launchView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:launchImage]];

launchView.frame = self.window.bounds;

launchView.contentMode = UIViewContentModeScaleAspectFill;

[self.window addSubview:launchView];

[UIView animateWithDuration:2.0f

                      delay:0.0f

                    options:UIViewAnimationOptionBeginFromCurrentState

                 animations:^{

                     

                     launchView.alpha = 0.0f;

                     launchView.layer.transform = CATransform3DScale(CATransform3DIdentity, 1.2, 1.2, 1);

                     

                 }

                 completion:^(BOOL finished) {

                     

                     [launchView removeFromSuperview];

                     

                 }];

这样就能轻松搞定LaunchImage了~

时间: 2024-10-15 11:25:04

iOS 获取 APP 的 Launch Image的相关文章

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

在某种场景下,可能我们需要获取app的图标名称和启动图片的名称.比如说app在前台时,收到了远程通知但是通知栏是不会有通知提醒的,这时我想做个模拟通知提示,需要用到icon名称:再比如在加载某个控制器时,想设置该控制器的背景图片为启动图片,需要用到启动图片名称. 而事实上icon图片放在系统AppIcon文件夹里,启动图片放在系统LaunchImage文件夹里,取这些图片的名称和其他一般资源图片名称不一样. 为了方便举例子,咱们先简单粗暴点 假设当前项目只支持iPhone设备,并且只支持竖屏:而

ios 获取app版本号

let infoDictionary = Bundle.main.infoDictionary!let appversion = infoDictionary["CFBundleShortVersionString"] as! String   //获取app的版本号 let deviceId = UIDevice.current.identifierForVendor?.description ?? ""   //可以作为标识设备的唯一编号 原文地址:https:

iOS获取APP的版本号

如上图,iOS有2个版本号,Version和Build,在target->General中可查看. Version在plist文件中的key是"CFBundleShortVersionString",和AppStore上的版本号保持一致,Build在plist中的key是"CFBundleVersion",代表build的版本号,该值每次build之后都应该增加1.这两个值都可以在程序中通过下面的代码获得: [[[NSBundle mainBundle] in

iOS 获取APP的CPU、内存等信息

目标是开发一个SDK,嵌入到APP里面,用来统计当前APP的实时CPU.内存等信息 2015.11.17 http://stackoverflow.com/questions/12889422/ios-cpu-usage-for-each-process-using-sysctl 这是第一个找到,采用的是sysctl函数 但是出来的CPU数据和instrument.GT的数据对不上(后两者数据比较接近) 2015.11.19 https://github.com/TianJIANG/ios_mo

iOS获取APP的版本号和名称

NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary]; CFShow(infoDictionary); // app名称 NSString *app_Name = [infoDictionary objectForKey:@"CFBundleDisplayName"]; // app版本 NSString *app_Version = [infoDictionary objectForKey:@&qu

iOS 获取APP相关信息 私有API

/* Generated by RuntimeBrowser Image: /System/Library/Frameworks/MobileCoreServices.framework/MobileCoreServices */ @interface LSApplicationWorkspace : NSObject // Image: /System/Library/Frameworks/MobileCoreServices.framework/MobileCoreServices + (i

iOS 获取验证码读秒时,按下home键,重新进app时,保证读秒正常进行

http://blog.csdn.net/m13215519957/article/details/51802187 (iOS)移动app很多时候会遇到注册,获取验证码倒计时的时候,按下home键进入后台,倒计时就会停止,这里提供一种方法,来保证时间会正常进行下去.  1:从appDelegate中这两个方法分别发送通知 #define sendNotification(key)     [[NSNotificationCenter defaultCenter] postNotification

IOS获取设备及App相应信息

iOS的SDK中提供了UIDevice,NSBundle,NSLocale,UIScreen等类来获取设备.app等相应的信息. UIDevice用于获取设备相应的信息,如设备名称.设备唯一标识.系统名称.系统版本号.设备模式.本地设备模式等. NSBundle用于获取App相应的信息,如应用名称.应用版本.应用Build版本等. NSLocale用于获取用户的本地化信息设置,例如货币类型,国家,语言,数字,日期格式的格式化,提供正确的地理位置显示等. UIScreen用于获取设备的屏幕尺寸和分

iOS 审核app被拒绝的各种理由以及翻译

原 apps被拒绝的各种理由以及翻译:http://my.oschina.net/201003674/blog/356189#OSC_h1_3 1. Terms and conditions(法律与条款) 1.1 As a developer of applications for the App Store you are bound by the terms of the Program License Agreement (PLA), Human Interface Guidelines