之前在項目中使用SD加載圖片的時候發(fā)現(xiàn)有些圖片加載不出來乳附,發(fā)現(xiàn)圖片內(nèi)存過大,導致加載過慢赋除,從而顯示不出來秉版,看起來就是一個問題,后來就使用YY來加載圖片清焕,但是又有了一個新的問題就是GIF圖片加載不出來祭犯,查詢了相關(guān)資料找到了了相關(guān)方案
寫一個YYAnimatedImageView的擴展
YYAnimatedImageView+Extension
+(void)load
{
? ? // hook:鉤子函數(shù)
? ? Method method1 = class_getInstanceMethod(self, @selector(displayLayer:));
? ? Method method2 = class_getInstanceMethod(self, @selector(dx_displayLayer:));
? ? method_exchangeImplementations(method1, method2);
}
-(void)dx_displayLayer:(CALayer *)layer {
//? ? if ([UIImageView instancesRespondToSelector:@selector(displayLayer:)]) {
//? ? [super displayLayer:layer];
//? ? }
? ? //通過變量名稱獲取類中的實例成員變量
? ? ? Ivar ivar = class_getInstanceVariable(self.class, "_curFrame");
? ? ? UIImage *_curFrame = object_getIvar(self, ivar);
? ? ? if (_curFrame) {
? ? ? ? ? layer.contents = (__bridge id)_curFrame.CGImage;
? ? ? } else {
? ? ? ? ? if (@available(iOS 14.0, *)) {
? ? ? ? ? ? ? [super displayLayer:layer];
? ? ? ? ? }
? ? ? }
}
這個寫完之后GIF圖片就能正常加載了
希望能幫到有緣人。