升級到iOS14沿癞,之前使用的YYimage框架全部不能正常顯示圖片
原因是:14.0 系統(tǒng)調(diào)用了下面方法七蜘,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的技術(shù)處理
+ (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 {
//通過變量名稱獲取類中的實(shí)例成員變量
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];
}
}
}
以上方式目前都能處理圖片不顯示問題非春,請按需使用。
創(chuàng)作不易雹食,謝謝打賞