使用YY无法加载GIF的解决方案

之前在项目中使用SD加载图片的时候发现有些图片加载不出来,发现图片内存过大,导致加载过慢,从而显示不出来,看起来就是一个问题,后来就使用YY来加载图片,但是又有了一个新的问题就是GIF图片加载不出来,查询了相关资料找到了了相关方案

写一个YYAnimatedImageView的扩展

YYAnimatedImageView+Extension

+(void)load

{

    // hook:钩子函数

    Method method1 = class_getInstanceMethod(self, @selector(displayLayer:));

    Method method2 = class_getInstanceMethod(self, @selector(dx_displayLayer:));

    method_exchangeImplementations(method1, method2);

}

-(void)dx_displayLayer:(CALayer *)layer {

//    if ([UIImageView instancesRespondToSelector:@selector(displayLayer:)]) {

//    [super displayLayer: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];

          }

      }

}


这个写完之后GIF图片就能正常加载了

希望能帮到有缘人。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 大部分人缺乏一种主动发掘信息的意识。读着别人写好的文字,思考着别人提出的问题,做着别人交代的事情。 https:/...
    士梦阅读 1,190评论 0 4
  • 设计模式是什么? 你知道哪些设计模式,并简要叙述? 设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类型的...
    iOS菜鸟大大阅读 751评论 0 1
  • 1、设计模式是什么? 你知道哪些设计模式,并简要叙述? 设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类...
    青春_追逐阅读 793评论 0 7
  • 1.设计模式是什么? 你知道哪些设计模式,并简要叙述? 设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类...
    司马DE晴空阅读 1,322评论 0 7
  • 引导 对于从事 iOS 开发人员来说,所有的人都会答出「 Runtime 是运行时 」,什么情况下用 Runtim...
    Winny_园球阅读 4,244评论 3 75