ios6和ios7扁平化界面的图片会不同,一般会由美工提供两组图片。假定ios6 的图片名称为A ;ios7的图片都定义为A_os7。这样的话图片适配基本实现如下:
step 1 :创建pch文件,用宏定义全局判别ios版本。在xcode6中apple取消了pch文件的默认创建,添加过程请参加上篇博文。
//判断是否为IOS7
#define ios7 ([[UIDevice currentDevice].systemVersion doubleValue]>=7.0)
在pch中添加如上代码进行ios7判定。
step 2 : 创建categray类型文件,
UIImage+ZY.h :
#import <UIKit/UIKit.h>
@interface UIImage (ZY)
/**
* 加载图片拦截器 用于图片的IOS7/IOS6适配
* @param name 图片名称
*
*/
+ (UIImage *)imageWithName:(NSString *)name;
@end
UIImage+ZY.m :
#import "UIImage+ZY.h"
@implementation UIImage (ZY)
+ (UIImage *)imageWithName:(NSString *)name{
if(ios7){
NSString *newName = [name stringByAppendingString:@"_os7"];
UIImage *image = [UIImage imageNamed:newName];
if(image == nil){
image = [UIImage imageNamed:name];
}
return image;
};
return [UIImage imageNamed:name];
};
@end
如上代码,通过已写好的宏定义判别是否为IOS7以上版本,若是,则将图片名称右连接“os7”.当然,不排除有的图片是IOS6/7共用的,我们可以判断+os7的图片能不能获得,图片为nil则视作共用。
这样我们在添加图片的时候便可以直接调用imageWhitName方法进行匹配。eg:
//设置图标
childVc.tabBarItem.image = [UIImage imageWithName:imageName];