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

相关推荐
Ethan_Zhou【数据恢复专家】9 小时前
mac 卸载流氓软件安全助手
安全·macos
给钱,谢谢!10 小时前
mac 安装MySQL
数据库·mysql·macos
十步杀一人_千里不留行10 小时前
如何在最新的 Mac mini M4 机器上,让 Ollama 支持局域网访问
macos·ollama
1024小神14 小时前
在swiftui中使用实现类似微信右上角的功能菜单
ios
北京自在科技16 小时前
iOS 18.4修复多个核心安全漏洞,间接增强Find My服务的数据保护能力
科技·ios·iphone·蓝牙·find my·北京自在科技
货拉拉技术19 小时前
iOS货运用户App组件路由器设计与实践
ios·架构
布多19 小时前
iOS分类中的关联对象:如何用运行时突破Category的存储限制
ios·面试·源码
Tee xm1 天前
清晰易懂的跨平台 MySQL 安装与配置教程
linux·windows·mysql·macos·安装
鸿蒙布道师1 天前
鸿蒙NEXT开发数值工具类(TS)
android·ios·华为·harmonyos·arkts·鸿蒙系统·huawei