使用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图片就能正常加载了

希望能帮到有缘人。

你可能感兴趣的:(使用YY无法加载GIF的解决方案)