获取APP的LaunchImage

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

[[153741]]

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

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

比如下面这样

2015-10-15-tips-access-current-launch-image1.gif

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

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

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

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

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

  1. CGSize viewSize = self.window.bounds.size; 
  2. NSString *viewOrientation = @"Portrait";    //横屏请设置成 @"Landscape" 
  3. NSString *launchImage = nil; 
  4. NSArray* imagesDict = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"UILaunchImages"]; 
  5. for (NSDictionary* dict in imagesDict) 
  6.     CGSize imageSize = CGSizeFromString(dict[@"UILaunchImageSize"]); 
  7.       
  8.     if (CGSizeEqualToSize(imageSize, viewSize) && [viewOrientation isEqualToString:dict[@"UILaunchImageOrientation"]]) 
  9.     { 
  10.         launchImage = dict[@"UILaunchImageName"]; 
  11.     } 
  12. UIImageView *launchView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:launchImage]]; 
  13. launchView.frame = self.window.bounds; 
  14. launchView.contentMode = UIViewContentModeScaleAspectFill; 
  15. [self.window addSubview:launchView]; 
  16. [UIView animateWithDuration:2.0f 
  17.                       delay:0.0f 
  18.                     options:UIViewAnimationOptionBeginFromCurrentState 
  19.                  animations:^{ 
  20.                        
  21.                      launchView.alpha = 0.0f; 
  22.                      launchView.layer.transform = CATransform3DScale(CATransform3DIdentity, 1.21.21); 
  23.                        
  24.                  } 
  25.                  completion:^(BOOL finished) { 
  26.                        
  27.                      [launchView removeFromSuperview]; 
  28.                        
  29.                  }]; 

这样就能轻松搞定LaunchImage了~

责任编辑:倪明 来源: 里脊串的开发随笔
相关推荐

2021-12-26 09:20:41

APP权限移动应用

2011-08-03 17:44:57

iPhone App 文件

2015-04-28 10:38:43

用户运营

2015-09-15 09:37:59

Appstore曝光位获取方式

2020-02-07 19:24:47

APP权限移动应用

2014-06-19 13:27:09

2017-02-14 17:00:39

iOSApp内存优化

2012-11-09 12:02:36

阿里云开发者大会

2021-09-23 14:39:04

APP极速版APP软件

2014-12-18 13:40:16

Web AppHybrid AppNative App

2013-10-23 11:34:57

张小龙App

2013-07-01 15:23:44

App

2013-05-27 11:36:42

山寨App Store潜规则

2015-10-09 09:11:39

html5原生App区别

2017-02-24 10:30:51

iOS开源App Store

2013-01-19 09:45:31

App移动开发趋势

2013-07-30 16:27:20

App Store潜规则

2012-06-28 15:47:31

Web AppHybrid AppHTML5

2013-09-04 15:07:06

移动应用设计

2016-07-13 14:40:38

云计算
点赞
收藏

51CTO技术栈公众号