算命公司网站建设制作开发方案,用哪个软件做网站好,网站建设维护资质,申请注册公司需要什么资料升级到iOS14#xff0c;之前使用的YYimage框架全部不能正常显示图片,当然动态图正常显示#xff0c;静态图无法显示#xff1b; 原因是#xff1a;14.0 系统调用了下面方法#xff0c;YYAnimatedImageView没有正确处理
-(void)displayLayer:(CALayer )layer; 1 可以用以下…升级到iOS14之前使用的YYimage框架全部不能正常显示图片,当然动态图正常显示静态图无法显示 原因是14.0 系统调用了下面方法YYAnimatedImageView没有正确处理
-(void)displayLayer:(CALayer )layer; 1 可以用以下方式处理
方式一
更改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]; } } }