在实际开发应用中,美工通常都会根据不同的机型设计出很多套背景图片,而这些背景图片的命名通常都是有规律的,我们刚好可以利用这一特点把图片名称的修改或者拼接写成一个方法,然后根据不同的机型返回不同的适配图片,即可达到自动适配的目的,且避免了图片的失真。
首先,为NSString新建立一个分类,专门用来在图片名后面拼接对应的屏幕信息
#import "NSString+append.h" @implementation NSString (append) -(NSString *)fileNameAppend:(NSString *)string { //拿到扩展名 NSString *extension = [self pathExtension]; //去掉扩展名 NSString *fileName = [self stringByDeletingPathExtension]; //拼接字符串名称 fileName = [fileName stringByAppendingString:string]; //加入扩展名 NSString *newFileName = [fileName stringByAppendingPathExtension:extension]; //返回处理好的图片名 return newFileName; } @end
接着,对UIImage写一个分类,功能是传入图片名,返回给我相应机型的适配图片
#import "UIImage+adjustImage.h" #import "NSString+append.h" @implementation UIImage (adjustImage) -(UIImage *)addImageNameForFit:(NSString *)name { //进行判断,对不同的机型加入不同的图片名称的后缀,返回不同的适配图片 if (iPhone5) { name = [name fileNameAppend:@"[email protected]"]; } else if (iPhone6) { name = [name fileNameAppend:@"[email protected]"]; } else if (iPhone6Plus) { name = [name fileNameAppend:@"[email protected]"]; } return [UIImage imageNamed:name]; } @end
这样,通过这两个类别(分类),如果我想加载一张背景图片,无需考虑机型适配问题,只要传入background.jpg,程序就会根据机型是iPhone5、iPhone6还是iPhone6plus自动给图片名加入相应的后缀,再到工程中找到相应的图片加载到屏幕中,从而保证了图片不是真且不被拉伸
时间: 2024-10-06 15:40:37