在升级到iOS17后你会发现,之前版本运行的很好,这个版本突然会出现一个运行闪退。报错日志为*** Assertion failure in void _UIGraphicsBeginImageContextWithOptions(CGSize, BOOL, CGFloat, BOOL)(), UIGraphics.m:410

跟踪到具体的报错位置如下所示:
UIGraphicsBeginImageContextWithOptions(size, NO, 0);

根据查阅的资料,iOS 17上使用UIGraphicsBeginImageContext(),size为0时,就会报相同的错误。
我估计我这个问题应该是top和bottom设置为0的原因,内部也是通过UIGraphicsBeginImageContext()实现的导致;
看官方API时,也会发现UIGraphicsBeginImageContext()这个方法也被废弃了被UIGraphicsImageRenderer替代,如下所示:

所以根据API的提示,为了解决这个问题,我们就需要去改造当前方法,如下所示:

这样就解决了,新版本崩溃问题的;
文章讲述了在升级至iOS17后遇到的运行闪退问题,原因在于UIGraphicsBeginImageContext在size为0时的Assertionfailure。作者推测可能是top和bottom设置为0导致,且官方推荐使用UIGraphicsImageRenderer替代。解决方案是更新代码以适应新的API。


4681

被折叠的 条评论
为什么被折叠?



