iOS 針對有中文的url圖片
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) 來替代系統的方法。
警告:儘量還是使用 英文命名,不要使用中文命名。
相關文章
- proxy 跨域配置, 針對有axios的baseURL跨域iOS
- iOS請求URL 中文轉譯iOS
- IOS遍歷網頁獲取網頁中<img>標籤中的圖片urliOS網頁
- ios裁剪圖片iOS
- iOS-對圖片操作---新增到自定義相簿iOS
- ios 圖片部分截圖iOS
- base64 , blob,url圖片的處理方式
- 大圖對比:iOS 7跟iOS 6有啥區別?iOS
- iOS圖片變灰iOS
- IOS圖片壓縮iOS
- IOS 平鋪圖片iOS
- iOS 圖片處理iOS
- DDGScreenShot —iOS 圖片處理--多圖片拼接 (swift)iOSSwift
- Kingfisher載入不出帶逗號的圖片url
- iOS-圖片水印,圖片裁剪和螢幕截圖iOS
- Unity Ads 針對 iOS 14 ATT 的準備指南UnityiOS
- 獲取演出詳情資料的圖片 url 根據要求組合後重復替換詳情裡的對方 url
- iOS 圖片壓縮方法iOS
- iOS 圖片上新增水印iOS
- 對映本地圖片地圖
- iOS中的圖片使用方式、記憶體對比和最佳實踐iOS記憶體
- app直播原始碼,Vue獲取URL圖片的寬高APP原始碼Vue
- 『ios』view和tableview的截圖和圖片拼接iOSView
- CSDN圖片如何手動關閉水印 / 如何改變水印的樣式——CSDN圖片URl分析
- webpack:url-loader 圖片路徑問題Web
- SDWebImage支援URL不變時更新圖片內容Web
- Swift iOS : WebView快取圖片的方法SwiftiOSWebView快取
- ios拼圖遊戲(一)之分割圖片iOS遊戲
- python 爬蟲之requests爬取頁面圖片的url,並將圖片下載到本地Python爬蟲
- background: url([object Module]);背景圖無法載入url-loader壓縮圖片配置問題Object
- 直播軟體原始碼,Vue獲取URL圖片的寬高原始碼Vue
- SDWebImage載入圖片的URL是同一個(如何處理)Web
- iOS 獲取視訊圖片iOS
- iOS 拿到IPA圖片資源iOS
- iOS圖片設定圓角iOS
- iOS無限輪播圖片iOS
- 巧妙的有css合併圖片解決tab切換的背景圖片CSS
- iOS開發中壓縮圖片的質量以及縮小圖片尺寸iOS