• 维护一套同时兼容 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];

  • 相关阅读:
    置换群
    背包问题
    并查集
    链式前向星
    一个简单的金额平均分配函数(C#版)
    EasyUI ComboGrid的绑定,上下键和回车事件,输入条件查询
    Oracle表解锁语句
    如何将两个json合并成一个
    textbox只能输入数字或中文的常用正则表达式和验证方法
    C#注册表的读,写,删除,查找
  • 原文地址:https://www.cnblogs.com/yingkong1987/p/3338389.html
Copyright © 2020-2023  润新知