快速接手新项目技巧:使用Runtime找到UIImage名字

栏目: IOS · 发布时间: 6年前

内容简介:在新接手的项目上做开发是比较慢的,尤其是开发、产品、设计都换了几波人的上了年纪的项目。其实我们还是可以通过一些途径来提高维护老项目的效率。比如今天(全新的开发人员、产品、设计)就碰到设计说新做的需求有一个切图是app中原来就有的,为了保持风格统一,沿用原来的切图。难道还需要定位到当前的页面对应的代码中去寻找相应图片的名字吗?如果后面的新需求有大量类似的图片怎么办?经过一番思考,确定了一种比较快速定位图片名字的方法。如下:利用

在新接手的项目上做开发是比较慢的,尤其是开发、产品、设计都换了几波人的上了年纪的项目。其实我们还是可以通过一些途径来提高维护老项目的效率。比如今天(全新的开发人员、产品、设计)就碰到设计说新做的需求有一个切图是app中原来就有的,为了保持风格统一,沿用原来的切图。难道还需要定位到当前的页面对应的代码中去寻找相应图片的名字吗?如果后面的新需求有大量类似的图片怎么办?经过一番思考,确定了一种比较快速定位图片名字的方法。如下:

第一步:给UIImage添加name属性

利用 runtimeUIImage 的分类中给 UIImage 关联一个属性 p_name ,替换原来的 imageNamed: 方法,在自己的方法中将图片的名字保存到 p_name 中。

#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface UIImage (name)
@end
NS_ASSUME_NONNULL_END
复制代码
#import "UIImage+name.h"
#import <objc/runtime.h>

@implementation UIImage (name)
- (void)setP_name:(NSString *)p_name {
    objc_setAssociatedObject(self, @selector(p_name), p_name, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
-(NSString *)p_name {
    return objc_getAssociatedObject(self, _cmd);
}
+ (UIImage *)wsk_imageNamed:(NSString *)imageName {
    UIImage *image = [UIImage wsk_imageNamed:imageName];
    image.p_name = imageName;
    return image;
}
+(void)load {
    Method imageNameMethod = class_getClassMethod([self class], @selector(imageNamed:));
    Method wsk_imageNamedMethod = class_getClassMethod([UIImage class], @selector(wsk_imageNamed:));
    method_exchangeImplementations(imageNameMethod, wsk_imageNamedMethod);
}
@end
复制代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

实战Linux编程精髓

实战Linux编程精髓

罗宾斯 / 中国电力出版社 / 2005-7 / 59.80元

编写应用软件,特别是那些比较重要的软件,毫无疑问要涉及到系统调用。在UNIX/Linux环境下编程更是如此。要想编写优秀的软件,就必须熟悉这些系统调用的方方面面。通过阅读这本书,你能够快速地掌握这些重要技术,以构建严谨的Linux软件。全书主要分为三大部分:第一部分讨论了基本的编程问题,包括Linux编程环境、基本的文件和进程管理与操作、内存操作,还介绍了一些基本的库接口。第二部分比较深入地讨论了......一起来看看 《实战Linux编程精髓》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器