码迷,mamicode.com
首页 > 其他好文 > 详细

如何从Images.xcassets中获取启动图片,导致模拟器上下有黑色缺失的原因

时间:2015-06-03 15:13:45      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:

之前没有在意过这个问题,一直接手的都是老项目,最近开了新项目,要求:

启动图片加载完成之后,会有一个loading页面,loading页面跟启动页面的情况相同

因为要适配7,8 所以就放到了Images.xcassets中的LaunchImage

写了一个工具类去判断屏幕尺寸而加载不同的图片

+ (UIImage*)lanuchImageWith:(NSString*)imageName
{
  NSString* newImageName = nil;
  if (kIPHONE5) {
    newImageName = [imageName stringByAppendingString:@"-568h"];
  }
  else if(kIPHONE6){
    newImageName = [imageName stringByAppendingString:@"-667h"];
  }
  else if (kIPHONE6_PLUS){
    newImageName = [imageName stringByAppendingString:@"-736h"];
  }
  else{
    newImageName = imageName;
  }
  
  return [UIImage imageNamed:newImageName];
}

通过方法调用

UIImage *image = [CZLanuchTool lanuchImageWith:@"Default"];

因为我的图片命名都是以Default开头的

但是通过这个方法返回的图片却为nil, 查看到newImage 确实有名字,但却无法加载到图片

但是把图片放到Image.xcassets外部却可以得到,搞了半天还是没能找出原因,后来在官方文档中找到了原因 

如果你想要访问Image.xcassets中的启动图片必须要用下面的命名方式:

if (kIPHONE5) {
 newImageName = [imageName stringByAppendingString:@"-700-568h"];
 }
 else if(kIPHONE6){
 newImageName = [imageName stringByAppendingString:@"-700-667h"];
 }
 else if (kIPHONE6_PLUS){
 newImageName = [imageName stringByAppendingString:@"-800-Portraint-736h"];
 }
 else{
 newImageName = [imageName stringByAppendingString:@"-700"];
 }
 
 return [UIImage imageNamed:newImageName];

在前面方法调用的时候只能使用LaunchImage

UIImage *image = [CZLanuchTool lanuchImageWith:@"LaunchImage"];

也就是说,只要你在Image.xcassets放入了启动图片,不管你的命名方式是怎么来的,都要按照: LaunchImage-700 / LanuchImage-800-Portraint- 这种方式进行拼接之后才能取得到 启动图片

 

启动图片我是是直接放到了Image.xcassts中的,那么在启动的时候系统会自动的去加载相对应尺寸的图片,但如果缺失了呢,那么就会依照这样的原则:

如果4s的启动图片没了,那么启动图片也就没了,是黑色的

如果5的启动图片没了,启动的时候会去寻找4s的启动图片

如果6的启动图片没了,启动的时候就会去寻找5的,如果5也没,那就去找4s的,依次类推 

大的分辨率使用小分辨率的图片,就会导致上下会有黑色的部分缺失

技术分享

如何从Images.xcassets中获取启动图片,导致模拟器上下有黑色缺失的原因

标签:

原文地址:http://www.cnblogs.com/douyinzi/p/4549020.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!