维护一套同时兼容 iOS 6 和 iOS 7,并且能够自动适应两个系统的 UI 风格的代码...
举例:
ios6:test.png
ios7:ios7_test.png
在ios7Image.plist中添加 "test"
PS:如果要统一成ios7风格,可以看看UI7Kit youknowone/UI7Kit 路 GitHub
@implementation UIImage (HT)
static NSArray *ios7Images;
+ (void)load {
if (IOS7) {
static dispatch_once_t once;
dispatch_once( &once, ^{
ios7Images = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"iOS7Images" ofType:@"plist"]];
[NSObject swizzleClassMethod:self from:@selector(imageNamed:) to:@selector(custom_imageNamed:)];
});
}
}
+ (UIImage *)custom_imageNamed:(NSString *)imageName {
if ([ios7Images containsObject:imageName]) {
return [self custom_imageNamed:[NSString stringWithFormat:@"ios7_%@",imageName]];
}
return [self custom_imageNamed:imageName];
}
@end
OK,图片多的时候怎么办呢?设计师弄好全部以ios7_开头命名的图片,放到一个目录,然后代码
NSArray *searchPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentPath = [searchPaths objectAtIndex:0];
NSString *path = [documentPath stringByAppendingString:@"/images"];
NSArray *files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:NULL];
NSMutableArray *array = [NSMutableArray array];
for (NSString *file in files) {
if ([file isEqualToString:@".DS_Store"]) {
continue;
}
NSString *temp = [file stringByReplacingOccurrencesOfString:@"ios7_" withString:@""];
temp = [temp stringByReplacingOccurrencesOfString:@"@2x" withString:@""];
temp = [temp stringByReplacingOccurrencesOfString:@".png" withString:@""];
if ([array containsObject:temp]) {
continue;
}
[array addObject:temp];
}
NSString *plistPath = [documentPath stringByAppendingString:@"/iOS7Images.plist"];
[array writeToFile:plistPath atomically:YES];
转载于:https://www.cnblogs.com/yingkong1987/p/3338389.html
维护一套同时兼容 iOS 6 和 iOS 7,并且能够自动适应两个系统的 UI 风格的代码...相关推荐
- android ios 实时视频播放,vue 移动端视频自动播放兼容ios,安卓
安卓初始化自动播放 首先创建一个jsmpeg.js文件,代码源文件放在百度网盘了,请自行下载 百度网盘下载地址 链接: https://pan.baidu.com/s/1bDvyrEAulMy8aYe ...
- iOS开发系列--iOS应用架构谈
转自:Casa Taloyum 目录 iOS应用架构谈 (一)开篇 iOS应用架构谈 (二)view层的组织和调用方案 iOS应用架构谈 (三)网络层设计方案 iOS应用架构谈 (四)动态部署方案 i ...
- iOS开发笔记--iOS应用架构谈 view层的组织和调用方案
前言 <iOS应用架构谈 开篇>出来之后,很多人来催我赶紧出第二篇.这一篇文章出得相当艰难,因为公司里的破事儿特别多,我自己又有点私事儿,以至于能用来写博客的时间不够充分. 现在好啦,第二 ...
- html5开发之ios屏幕适配,iOS开发屏幕尺寸以及屏幕适配等问题(转载内容)
原帖地址:http://blog.csdn.net/phunxm/article/details/42174937/ 仅供我个人收藏学习,原博主如不同意请联系qq651263878进行删除,在此表示感 ...
- iOS - 常用的iOS Mac框架和库以及常用的中文开发博客
对于iOS以及Mac开发中常用到的一些框架,以及比较好的技术博客做了总结: 主要内容如下: UI 下拉刷新 模糊效果 AutoLayout 富文本 图表 表相关 隐藏与显示 HUD与Toast 对话框 ...
- iOS 5与iOS 6的 low-memory 处理(转自cocoaChina)
//加入部分注释 移动设备终端的内存极为有限,应用程序必须做好low-memory处理工作,才能避免程序因内存使用过大而崩溃. low-memory 处理思路 通常一个应用程序会包含多个view co ...
- iOS 5与iOS 6的 low-memory 处理
移动设备终端的内存极为有限,应用程序必须做好low-memory处理工作,才能避免程序因内存使用过大而崩溃. low-memory 处理思路 通常一个应用程序会包含多个view controllers ...
- iOS面试准备 - ios篇
iOS面试准备 - ios篇 ios面试准备 - objective-c篇 ios面试准备 - 网络篇 IOS面试准备 - C++篇 iOS面试准备 - 其他篇 运行时 https://juejin. ...
- AnyTrans for iOS for mac(ios数据传输管理工具)
AnyTrans 是一款专业的ios管理工具,以聪明的方式管理.传输.备份.导出.导入.删除.修改.上传.管理所有的iOS数据和文件,在一个便利的地方完全管理你的iPhone,iPad,iPod,甚至 ...
最新文章
- 公开平等的企业文化是OKR落地第一步
- 宝塔同时安装苹果cms海洋cms_★苹果cms常见问题有哪些?100个常见问题的解决方法...
- 5地图组件 uni_uni-app学习笔记(一)-- uni-app简介
- java 判断端口是否被占用_java检测端口是否被占用详解
- Android的图片缓存ImageCache(转)
- PHP替换回车换行的三种方法
- 炸裂!谷歌这波操作,预警了什么?
- gitlable iphone_iPhone 12首批用户成“小白鼠”,“信号故障”躺枪者无数
- ZYNQ PS端输出不准确时钟供PL使用
- 孩子上了高一突然学不懂了,该怎么办?
- Ubuntu18.04 安装 Mysql 5.7 问题
- CSS的BEM命名规范
- 红旗 Linux 5.0 正式版下载地址
- 企业微信裂变玩法有哪些?需要使用哪些工具?
- 【数据攻略】字节面试真题(含答案)+100道面试题库
- POJ3169 Layout , 最短路算法解差分约束问题
- 函数——求三个数的最大值
- 使用eclipse开发Java Web项目(最最最基础)
- 通用网络空间安全技术
- 格林纳达常驻WTO大使孙宇晨发布声明祝贺北京冬奥会顺利召开
热门文章
- 径向基函数(RBF)神经网络
- c++ 实例精通(1)
- java dto是什么_java项目中VO和DTO以及Entity,各自是在什么情况下应用的
- 【Kaggle-MNIST之路】CNN+改进过的损失函数(三)
- 【MPI编程】任意数节点的树形求和(高性能计算)
- 多协程实例讲解(python 三)
- compareto方法_Java compareTo() 字符串方法
- Linux内存描述之概述--Linux内存管理(一)
- HUST 1555 A Math Homework
- 2015 Multi-University Training Contest 5