维护一套同时兼容 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 风格的代码...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1019.Line Painting(线
- 下一篇: 试试看 ? 离奇古怪的javascrip