升級到iOS14,之前使用的YYimage框架全部不能正常顯示圖片
原因是:14.0 系統調用了下面方法,YYAnimatedImageView沒有正確處理
*-(void)displayLayer:(CALayer )layer;
可以用以下方式處理:
方式一:
更改YYimage源碼,在YYAnimationImageView.m中
- (void)displayLayer:(CALayer *)layer {
if (_curFrame) {
layer.contents = (__bridge id)_curFrame.CGImage;
} else {
if (@available(iOS 14.0, *)) {
[super displayLayer:layer];
}
}
}
方式二:
不更改YYimage源碼,以防之后作者升級,使用Hook的技術處理
+ (void)load {
Method a = class_getInstanceMethod(self, @selector(displayLayer:));
Method b = class_getInstanceMethod(self, @selector(swizzing_displayLayer:));
method_exchangeImplementations(a, b);
}
- (void)swizzing_displayLayer:(CALayer *)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];
}
}
}
以上方式目前都能處理圖片不顯示問題,請按需使用。
創作不易,謝謝打賞