700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > iOS14 YYAnimatedImageView图片不显示 多数用在YYLabel的富文本中添加的图片

iOS14 YYAnimatedImageView图片不显示 多数用在YYLabel的富文本中添加的图片

时间:2022-04-28 23:34:06

相关推荐

iOS14 YYAnimatedImageView图片不显示 多数用在YYLabel的富文本中添加的图片

方案一 简单粗暴

// 直接在YYAnimatedImageView上添加一个UIImageView/// @param yyimage YYAnimatedImageView/// @param size UIImageView的大小+(UIImageView *)addYYimageSubImageView:(YYAnimatedImageView *)yyimage size:(CGSize)size{UIImageView *imView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, size.width, size.height)];imView.image = yyimage.image;[yyimage addSubview:imView];return imView;}

方案二 创建YYAnimatedImageView的category在load实现交换方法(从根本上解决这个bug)

.h

#import "YYAnimatedImageView.h"NS_ASSUME_NONNULL_BEGIN@interface YYAnimatedImageView (ImageShow)@endNS_ASSUME_NONNULL_END

.m

+ (void)load{// 获取系统的方法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];}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。