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

相关推荐
一块小土坷垃14 小时前
## BetterTouchTool 5.736 特别版 – macOS 触控板增强工具深度体验
macos·开源软件
ahauedu15 小时前
macOS 系统在处理文件时,会自动生成一些以 ._ 开头的隐藏文件
macos
一块小土坷垃15 小时前
## Permute 3.14.7 特别版 – 强大的 macOS 多媒体格式转换工具体验
macos·音频·开源软件
hudawei99615 小时前
Mac VS win11终端命令对比
macos·win11·cd·ls·终端命令·dir
日月新著16 小时前
仙踪问道·爱马仕助手:Mac 本地 AI Agent 零门槛部署实战
人工智能·macos
Digitally16 小时前
如何在 Mac/MacBook 上删除 iPhone 照片?
macos·ios·iphone
珂玥c16 小时前
vware的mac虚拟机转换为.qcow格式
macos
#山间清泉#17 小时前
VMWare虚拟机mac地址自定义配置
运维·macos·架构·vmware
UnicornDev17 小时前
从零开始学iOS开发(第四十六篇):SwiftUI 导航与路由 —— 构建可扩展的导航架构
ios