@implementation LableTextFilter
//
+ (void)initialize
{
// 获取到UILabel中setText对应的method
Method setText = class_getInstanceMethod([UILabel class], @selector(setText:));
Method setTextMySelf = class_getInstanceMethod([self class], @selector(setTextHooked:));
// 将目标函数的原实现绑定到setTextOriginalImplemention方法上
IMP setTextImp = method_getImplementation(setText);
class_addMethod([UILabel class], @selector(setTextOriginal:), setTextImp, method_getTypeEncoding(setText));
// 然后用我们自己的函数的实现,替换目标函数对应的实现
IMP setTextMySelfImp = method_getImplementation(setTextMySelf);
class_replaceMethod([UILabel class], @selector(setText:), setTextMySelfImp, method_getTypeEncoding(setText));
}
/*
* 截获到 UILabel 的setText
* 我们可以先处理完以后,再继续调用正常处理流程
*/
- (void)setTextHooked:(NSString *)text
{
//在这里插入过滤算法
text = [text stringByReplacingOccurrencesOfString:@"<br>" withString:@"\r\n"];
// do something what ever you want
NSLog(@"haha, this is my self setText !!!!!!!");
// invoke original implemention
[self performSelector:@selector(setTextOriginal:) withObject:text];
}
@end
过滤 UILabel 显示时的网页字符串
最新推荐文章于 2023-08-07 00:27:31 发布