標籤:
在實際開發應用中,美工通常都會根據不同的機型設計出很多套背景圖片,而這些背景圖片的命名通常都是有規律的,我們剛好可以利用這一特點把圖片名稱的修改或者拼接寫成一個方法,然後根據不同的機型返回不同的適配圖片,即可達到自動適配的目的,且避免了圖片的失真。
首先,為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自動給圖片名加入相應的尾碼,再到工程中找到相應的圖片載入到螢幕中,從而保證了圖片不是真且不被展開
iOS根據圖片名進行自動適配(通過類別實現)