iOS14 YYAnimatedImageView 显示富文本问题解决方案

由于iOS 14上的iPhone12等机型上使用之前的富文本显示表情包是空的,是因为iOS14 没有调用绘制问题。解决办法:
找到这个转换YYLable的YYAnimatedImageView对象,创建一个YYAnimatedImageView分类,使用runtime交换一下自带方法。创建完你什么也不用干。
代码如下:

#import 

NS_ASSUME_NONNULL_BEGIN

@interface YYAnimatedImageView (ImageShow)

@end

NS_ASSUME_NONNULL_END

#import "YYAnimatedImageView+ImageShow.h"
#import 

@implementation YYAnimatedImageView (ImageShow)

+ (void)load{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        // 获取系统的方法
            Method displayLayerMethod = class_getInstanceMethod(self, @selector(displayLayer:));
            // 获取更新的方法
            Method displayLayerNewMethod = class_getInstanceMethod(self, @selector(displayLayerNew:));
            // 方法交换
            method_exchangeImplementations(displayLayerMethod, displayLayerNewMethod);

    });
    
    
}
 
- (void)displayLayerNew:(CALayer *)layer{
    Ivar imageIvar = class_getInstanceVariable([self class], "_curFrame");
    UIImage *image = object_getIvar(self, imageIvar);
    if (image) {
        layer.contents = (__bridge  id)image.CGImage;
        
    }
    else{
        if (@available(iOS 14.0,*)) {
            [super displayLayer:layer];
        }
    }
}

@end
 

原:

iOS14 YYAnimatedImageView 显示富文本问题解决方案_第1张图片
image.png

解决后:

iOS14 YYAnimatedImageView 显示富文本问题解决方案_第2张图片
image.png

你可能感兴趣的:(iOS14 YYAnimatedImageView 显示富文本问题解决方案)