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;

}

}

}

相关推荐
黑科技iOS上架11 小时前
App Store5.6隐藏功能究竟怎么排查?
ios·审核
Yannik14 小时前
iOS Swift Package Manager(SPM)私有组件完整实操
ios·swift
随遇丿而安14 小时前
第 4 周:28KB 的 PNG 占了 8MB 内存,因为图片内存看尺寸不看文件大小
ios
leizhen1984080915 小时前
Vibe Coding:门槛降了,但判断力成了新的门槛
人工智能·安全·ios
老牛日常随笔20 小时前
Meta 开源 8160 亿参数模型,官方给的方案是两台 Mac Studio
macos·开源
我就是不信20 小时前
Swift 方法派发机制详解
开发语言·ios·swift
AIsoft_868921 小时前
科会通录音工具倍速回放怎么切换速度
ios·智能手机
老李IT笔记1 天前
设备显示在线但指令没回执:三类静默失效的排查顺序
ios·iphone
芯械研究所1 天前
她宁、益博思、倍思、绿联哪款ipad电容笔好?四款电容笔款式实测解读
ios·ipad·电容笔·电容笔推荐·电容笔测评