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了~
iOS 获取 APP 的 Launch Image的更多相关文章
- iOS获取app图标和启动图片名字(AppIcon and LaunchImage's name)
在某种场景下,可能我们需要获取app的图标名称和启动图片的名称.比如说app在前台时,收到了远程通知但是通知栏是不会有通知提醒的,这时我想做个模拟通知提示,需要用到icon名称:再比如在加载某个控制器 ...
- ios 获取app版本号
let infoDictionary = Bundle.main.infoDictionary!let appversion = infoDictionary["CFBundleShortV ...
- iOS 获取APP的CPU、内存等信息
目标是开发一个SDK,嵌入到APP里面,用来统计当前APP的实时CPU.内存等信息 2015.11.17 http://stackoverflow.com/questions/12889422/ios ...
- iOS 获取app进程被杀死事件
程序被用户双击上滑杀死后,就对app做一些特殊的处理 下面的方法可以获取到用户双击上滑杀死的事件 - (void)applicationDidEnterBackground:(UIApplicatio ...
- iOS获取APP的版本号和名称
NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary]; CFShow(infoDictionary); // ap ...
- iOS 获取APP相关信息 私有API
/* Generated by RuntimeBrowser Image: /System/Library/Frameworks/MobileCoreServices.framework/Mobile ...
- iOS获取各种数据方法整理以及IDFA与IDFV使用环境
iOS获取APP版本号: NSString *AppVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBun ...
- iOS获取设备型号和App版本号等信息(OC+Swift)
iOS获取设备型号和App版本号等信息(OC+Swift) 字数1687 阅读382 评论3 喜欢10 好久没有写过博客了,因为中间工作比较忙,然后有些个人事情所以耽误了.但是之前写的博客还一直有人来 ...
- ios 2017启动页(Launch Screen Images)、图标(App Icon)尺寸大小
ios 2017启动页(Launch Screen Images).图标(App Icon)尺寸大小 iPhone Portrait iOS 8,9-Retina HD 5.5 (1242×220 ...
随机推荐
- 通过三个DEMO学会SignalR的三种实现方式 转载https://www.cnblogs.com/zuowj/p/5674615.html
一.理解SignalR ASP .NET SignalR 是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信(即:客户端(Web页面)和服务器端可以互相实时的通知消息 ...
- MySQL数据库 数据库的引擎,模式,数据类型(更新中...)
数据库的引擎:驱动数据的方式-数据库优化 前提:引擎是建表的时候规定的,提供给表使用的,不是数据库 mysql> show engines #展示所有引擎 #几种比较常见的引擎 # innodb ...
- 微信小程序开发(一)
引自http://www.cnblogs.com/mdnx/p/6004653.html 第一步 (下载开发工具) https://mp.weixin.qq.com/debug/wxadoc/dev ...
- 阿里面试题,为什么wait()方法要放在同步块中?
某天我在***的时候,突然有个小伙伴微信上说:“哥,阿里面试又又挂了,被问到为什么wait()方法要放在同步块中,没答出来!” 我顿时觉得**一紧,仔细回顾一下,如果wait()方法不在同步块中,代码 ...
- 2019-8-31-dotnet-通过-WMI-获取指定进程的输入命令行
title author date CreateTime categories dotnet 通过 WMI 获取指定进程的输入命令行 lindexi 2019-08-31 16:55:59 +0800 ...
- Luogu P3106 [USACO14OPEN]GPS的决斗Dueling GPS's(最短路)
P3106 [USACO14OPEN]GPS的决斗Dueling GPS's 题意 题目描述 Farmer John has recently purchased a new car online, ...
- 洛谷P5071 此时此刻的光辉
2s512M. 解:先分解质因数.考虑按照质因数大小是否大于√分类. 大于的就是一个数颜色个数,莫队即可n√m. 小于的直接枚举质因数做前缀和然后O(1)查询.总时间复杂度n(√m + σ(√V)). ...
- [转]js的垃圾回收机制
javascript具有自动垃圾收集机制,执行环境会负责管理代码执行过程中使用的内存.在编写javascript程序时,开发人员不用再关心内存使用问题,所需内存的分配以及无用内存的回收完全实现了自动管 ...
- 20190809-RP?不存在的
火苗静静的将世界荡涤. ??? 毁灭它,点亮它. 只发光不放热? 那是虚无, ……还有你我的遗言. 考试过程. 通看三题. 额嗯嗯,没想法. T1写个暴力吧. T2好像挺简单. T3好像还行?? T1 ...
- 2016中国人工智能企业TOP100, CBinsight2016年100家人工智能公司
2016中国人工智能企业TOP100 不论在学界还是业界,均有代表人物对人工智能表示了担忧,如史蒂芬·霍金和比尔·盖茨.尽管如此,国内外科技巨头都积极发力人工智能,一波波创业者也相继涌入.人工智能成为 ...