提示:Assertion failure in void _UIGraphicsBeginImageContextWithOptions(CGSize, BOOL, CGFloat, BOOL)(), UIGraphics.m:410
问题原因
UIGraphicsBeginImageContext API 在 iOS17 已经被废弃了
解决方法
创建 Category 文件:新建文件 > Objective-C File
File:填写名称如Hook (实际文件名称YYAsyncLayer+Hook.h)
File Type:选择Category
Class:YYAsyncLayer (注意,YYKit为:YYAsyncLayer;YYText为:YYTextAsyncLayer)
建成文件示例,以 YYAsyncLayer 为例:
// .h 文件 #import "YYAsyncLayer.h" NS_ASSUME_NONNULL_BEGIN @interface YYAsyncLayer (Hook) @end NS_ASSUME_NONNULL_END
// .m 文件 #import "YYAsyncLayer+Hook.h" @implementation YYAsyncLayer (Hook) + (void)load { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ Method a = class_getInstanceMethod(self, @selector(display)); Method b = class_getInstanceMethod(self, @selector(swizzing_display)); method_exchangeImplementations(a, b); }); } - (void)swizzing_display{ //通过变量名称获取类中的实例成员变量 if (self.bounds.size.width <=0 || self.bounds.size.height <=0) { self.contents = nil; return; } else { [self swizzing_display]; } } @end
注意⚠️:load 为类方法
重新运行,问题解决(最好是 Clean 项目,以及重启模拟器)。
如果Swift或者跟踪YYKit解决进度,请查看 https://github.com/ibireme/YYText/issues/984
文章评论