iOS 14 YYAnimatedImageView加载图片失败处理

升级到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\]; } } }

相关推荐
__WanG3 小时前
Mac 本地部署 OMLX + 通义千问 Qwen3.5-27B 保姆级教程
macos
节点小宝4 小时前
一站式部署:支持Windows、macOS、Linux三端的统一方案
linux·运维·macos
呆萌小新@渊洁6 小时前
音频识别入门内容
macos·音视频·xcode
觉醒程序员9 小时前
Mac电脑硬盘扩容后,如何重装git,node更干净
macos
Digitally11 小时前
iPhone 卡在恢复模式:如何修复(分步指南)
ios·iphone
LAM LAB11 小时前
【Mac】修改改 command 和 alt 键位映射
macos
vx-bot55566611 小时前
企业微信ipad协议的协议状态机与生命周期管理
ios·企业微信·ipad
ITKEY_11 小时前
macOS通过命令行启动iOS模拟器
macos·ios
00后程序员张12 小时前
iPhone 无需越狱文件管理 使用Keymob查看导出文件
android·ios·小程序·https·uni-app·iphone·webview
OneCrab12 小时前
Iphone漏洞利用工具包 Coruna DarkSword
ios·cocoa·iphone