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;

}

}

}

相关推荐
汤姆yu5 小时前
macOS系统下Aider完整安装、配置与实战使用教程
大数据·人工智能·算法·macos·github·copilot
wabil6 小时前
【LVGL】滑动切换页面的界面优化实践
开发语言·ios·swift
威武的花瓣6 小时前
调用Page.RegisterAsyncTask()的异步页
ios·iphone
码云数智-园园7 小时前
SwiftUI 6 生产落地踩坑实录
macos·objective-c·cocoa
向阳是我7 小时前
在 Mac(M2)上用 faster-whisper 实现高精度中文语音转文字
python·macos·ai·whisper·语音识别
Tisfy7 小时前
MacOS:首次外接键盘初始化设置(Option/Command互换、左上角·~而非§±)
macos·计算机外设
Digitally1 天前
5 种简易方法:摩托罗拉手机数据迁移至 iPhone 17
ios·智能手机·iphone
小鹿软件办公1 天前
如何利用 Mac 自带 iMovie 裁剪去除视频 Logo 或文字水印
macos·音视频·视频去水印·简鹿水印助手
一个假的前端男1 天前
在 macOS 上通过 VirtualBox 安装 Home Assistant 完整教程
macos