iOS 針對有中文的url圖片
![1622166-ad7bf14a462bd014.jpg](https://i.iter01.com/images/3ccff1abfdad3a1991f5db1386e1f2eaa39fdbf60b97df8d0e72c01507ee255b.jpg)
SD.jpg
SDWebImage 針對有中文的 url 會不顯示圖片的
- 所以需要先把 url 轉為 utf8 編碼
NSString *url = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
- 但是假如工程已經很大了,很多地方都用到了,不可能一個一個加吧
所以就需要 Category 了
程式碼如下:
記得匯入下 runtime 標頭檔案
#import <objc/runtime.h>
+ (void)load {
/*
self:UIImage
誰的事情,誰開頭 1.傳送訊息(物件:objc) 2.註冊方法(方法編號:sel) 3.互動方法(方法:method) 4.獲取方法(類:class)
Method:方法名
獲取方法,方法儲存到類
Class:獲取哪個類方法
SEL:獲取哪個方法
imageName
*/
// 獲取imageName:方法的地址
Method URLWithStringMethod = class_getClassMethod(self, @selector(URLWithString:));
// 獲取sc_imageWithName:方法的地址
Method sc_URLWithStringMethod = class_getClassMethod(self, @selector(sc_URLWithString:));
// 交換方法地址,相當於交換實現方式2
method_exchangeImplementations(URLWithStringMethod, sc_URLWithStringMethod);
}
+ (NSURL *)sc_URLWithString:(NSString *)URLString {
NSString *newURLString = [self IsChinese:URLString];
return [NSURL sc_URLWithString:newURLString];
}
//判斷是否有中文
+ (NSString *)IsChinese:(NSString *)str {
NSString *newString = str;
for(int i=0; i< [str length];i++){
int a = [str characterAtIndex:i];
if( a > 0x4e00 && a < 0x9fff)
{
NSString *oldString = [str substringWithRange:NSMakeRange(i, 1)];
NSString *string = [oldString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
newString = [newString stringByReplacingOccurrencesOfString:oldString withString:string];
} else{
}
}
return newString;
}
原理:就是利用 runtime 交換方法(method_exchangeImplementations) 來替代系統的方法。
警告:儘量還是使用 英文命名,不要使用中文命名。
相關文章
- Data:URL 圖片
- url 生成二維碼圖片
- iOS-對圖片操作---新增到自定義相簿iOS
- Unity Ads 針對 iOS 14 ATT 的準備指南UnityiOS
- base64 , blob,url圖片的處理方式
- DDGScreenShot —iOS 圖片處理--多圖片拼接 (swift)iOSSwift
- 大頭針顯示多張圖片
- iOS 圖片壓縮方法iOS
- iOS開發-圖片UIImageiOSUI
- 『ios』view和tableview的截圖和圖片拼接iOSView
- iOS中的圖片使用方式、記憶體對比和最佳實踐iOS記憶體
- proxy 跨域配置, 針對有axios的baseURL跨域iOS
- Swift iOS : WebView快取圖片的方法SwiftiOSWebView快取
- webpack:url-loader 圖片路徑問題Web
- 獲取演出詳情資料的圖片 url 根據要求組合後重復替換詳情裡的對方 url
- Android 和 iOS 圖片輪播AndroidiOS
- iOS 獲取視訊圖片iOS
- iOS ImageView contentMode 圖片填充模式iOSView模式
- app直播原始碼,Vue獲取URL圖片的寬高APP原始碼Vue
- CSDN圖片如何手動關閉水印 / 如何改變水印的樣式——CSDN圖片URl分析
- python 爬蟲之requests爬取頁面圖片的url,並將圖片下載到本地Python爬蟲
- Rasa中使用lookup table時針對中文對RegexEntityExtractor進行修改
- background: url([object Module]);背景圖無法載入url-loader壓縮圖片配置問題Object
- 對映本地圖片地圖
- iOS裡關於圖片的Crop和ResizeiOS
- iOS實現點選圖片放大&長按儲存圖片iOS
- SDWebImage支援URL不變時更新圖片內容Web
- 移動端複製文字clipboard 以及針對iOS的處理iOS
- SDWebImage載入圖片的URL是同一個(如何處理)Web
- 直播軟體原始碼,Vue獲取URL圖片的寬高原始碼Vue
- iOS圖片記憶體優化iOS記憶體優化
- iOS開發圖片格式選擇iOS
- iOS 常用圖片格式判斷 (Swift)iOSSwift
- 1218 圖片對齊模式模式
- 針對ShotGun的ServerRewindOTGServer
- Laravel-admin修改圖片上傳時存入資料庫的URLLaravel資料庫
- 前端手勢控制圖片外掛書寫四(圖片上傳及Ios圖片方向問題)前端iOS
- poi 操作 PPT,針對 PPTX--圖表篇
- iOS 使用 NSCharacterSet encode URLiOS