之前没有在意过这个问题,一直接手的都是老项目,最近开了新项目,要求:
启动图片加载完成之后,会有一个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的,依次类推
大的分辨率使用小分辨率的图片,就会导致上下会有黑色的部分缺失
时间: 2024-09-29 21:31:14