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

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

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

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

第一步:给UIImage添加name属性

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

#import 
  
    
NS_ASSUME_NONNULL_BEGIN
@interface UIImage (name)
@end
NS_ASSUME_NONNULL_END
#import "UIImage+name.h"
#import

@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

第二步:找到目标UIImageVIew的地址

方法一:不借助任何外部工具,使用xcode的 Debug View Hierarchy

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

方法二:使用Chisel命令pviews。

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

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

方法三:使用工具FLEX找到UIImageVIew的地址。

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

第三步:打印图片的名字

使用LLDB的po命令 po [((UIImageView*)0x122203f40).image valueForKey:@"p_name"] 打印图片的名字。

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

注意:xib中设置的图片名字,打印为nil

视频转GIF步骤

  1. brew install ffmpeg

  2. ffmpeg -ss 00:00:00 -i flex.mov -s 375x667 -r "2" flex.gif

作者:花丶满楼

链接:https://juejin.im/post/5c10f54cf265da61441fe935


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

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

思想的未来

思想的未来

(美)劳伦斯﹒莱斯格 / 李旭 / 中信出版社 / 2004-10 / 29.00元

因特网革命已到来,一些人说它已经过去,革命缘何而来?又缘何而去呢? 劳伦斯·莱斯格对因特网革命中为何会出现一种反革命的破坏性力量及后果做出了解释。创作之所以繁荣,是因为因特网保护了创新的公共资源。是因为因特网保护了创新的公共资源。因特网的独特设计营造出一个中立的平台。最广大范围的作者们可在此平台上进行试验。围绕此平台的法律架构对这一自由空间给予了保护,以使文化和信息——我们这个时代的......一起来看看 《思想的未来》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试