iOS14 YYAnimatedImageView 显示富文本问
2020-12-29 本文已影响0人
032c6843a285
由于iOS 14上的iPhone12等机型上使用之前的富文本显示表情包是空的,是因为iOS14 没有调用绘制问题。解决办法:
找到这个转换YYLable的YYAnimatedImageView对象,创建一个YYAnimatedImageView分类,使用runtime交换一下自带方法。创建完你什么也不用干。
代码如下:
#import <YYKit/YYKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface YYAnimatedImageView (ImageShow)
@end
NS_ASSUME_NONNULL_END
#import "YYAnimatedImageView+ImageShow.h"
#import <objc/message.h>
@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
原:
image.png
解决后:
image.png