SDImage的URL坑

xiaoxiao2021-02-27  352

项目中用sd来显示图片

结果有些图片的url中有汉字或者π这种符号,结果sd无法识别这种url,图片就加载不出

之前说了可以先给url转码后使用,但是项目中太多地方使用sd,不可能一个个去修改,所以就想到写一个UIImageView的分类用runtime去交换方法,在方法中进行转码

结果做出来后发现该显示不出还是显示不出,打断点测试才发现是sd根本就不接收这样的url,直接为nil

那就只好写个NSURL的分类了,然后解决了,总算有机会实践runtime在项目中了。。

#import "NSURL+NSURL_SDImageURLTranscoding.h"

#import <objc/message.h>

@implementation NSURL (NSURL_SDImageURLTranscoding)

+ (void)load{

    staticdispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

        Method superMethod =class_getClassMethod([NSURLclass], @selector(URLWithString:));

        Method transCodingMethod =class_getClassMethod([NSURLclass], @selector(transCodingURL:));

        method_exchangeImplementations(superMethod, transCodingMethod);

    });

}

+ (NSURL *)transCodingURL:(NSString *)urlStr{

    urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    return [selftransCodingURL:urlStr];

}

runtime还不是很懂,代码可能写得有坑,还请多指教

转载请注明原文地址: https://www.6miu.com/read-2942.html

最新回复(0)