iOS 14 YYAnimatedImageView加载图片失败处理
1.问题出在YYAnimatedImageView源码一个方法中
- (void)displayLayer:(CALayer *)layer {
if (_curFrame) {
layer.contents = (__bridge id)_curFrame.CGImage;
}
}
2.解决办法
第一种方法:修改源码方法
- (void)displayLayer:(CALayer *)layer {
if (_curFrame) {
layer.contents = (__bridge id)_curFrame.CGImage;
}else{
if (@available(iOS 14.0, *)) {
[super displayLayer:layer];
}
}
}
第二种方法:运行时
#import "YYAnimatedImageView+iOS14.h"
#import <objc/runtime.h>
@implementation YYAnimatedImageView (iOS14)
+ (void)load {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
Method method1;
Method method2;
method1 = class_getInstanceMethod([self class], @selector(lz_displayLayer:));
method2 = class_getInstanceMethod([self class], @selector(displayLayer:));
method_exchangeImplementations(method1, method2);
});
}
- (void)lz_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];
}
}
}
@end
最新文章
- Linux 文件系统分区基础
- Sequence Project Showplan Operator 序列映射运算符
- Linux编译安装源码包的流程
- WPF之MVVM(Step4)&mdash;&mdash;使用Prism(2)
- redis-persist上线
- 我的第二个app上线:术购管家
- MySQ binlog三种模式
- jg-table 过程2 ( jgTable )
- Android测试日志文件抓取与分析
- Nginx+IIS+Redis 处理Session共享问题 2
- 2734:十进制到八进制-poj
- uc/osⅡ/Ⅲ
- CentOS中service命令与/etc/init.d的关系以及centos7的变化
- 腾讯的模板引擎---artTemplate
- 【Unity Shader】(九) ------ 高级纹理之渲染纹理及镜子与玻璃效果的实现
- RabbitMQ与AMQP
- Linux 入门记录:四、Linux 系统常用命令
- 文法设计,对于void的修改
- C++_IO与文件1-输入与输出概述
- (转)list_orderby