iOS 17.0 YYText 崩溃处理

YYText,发现在iOS 17上运行会崩溃,触发了系统的断言:
UIGraphicsBeginImageContext() failed to allocate CGBitampContext: size={382, 0}, scale=3.000000, bitmapInfo=0x2002. Use UIGraphicsImageRenderer to avoid this assert.

查了下 api,发现UIGraphicsBeginImageContext在iOS 17上已经deprecated了。

处理办法:YYTextAsyncLayer.m

UIGraphicsBeginImageContextWithOptions(self.bounds.size, self.opaque, self.contentsScale);
CGContextRef context = UIGraphicsGetCurrentContext();
if (self.opaque) {
CGSize size = self.bounds.size;
size.width *= self.contentsScale;
size.height *= self.contentsScale;
CGContextSaveGState(context); {
if (!self.backgroundColor || CGColorGetAlpha(self.backgroundColor) < 1) {
CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);
CGContextAddRect(context, CGRectMake(0, 0, size.width, size.height));
CGContextFillPath(context);
}
if (self.backgroundColor) {
CGContextSetFillColorWithColor(context, self.backgroundColor);
CGContextAddRect(context, CGRectMake(0, 0, size.width, size.height));
CGContextFillPath(context);
}
} CGContextRestoreGState(context);
}
task.display(context, self.bounds.size, ^{return NO;});
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
self.contents = (__bridge id)(image.CGImage);

替换为:

  UIGraphicsImageRendererFormat *format = [[UIGraphicsImageRendererFormat alloc] init];format.opaque = self.opaque;format.scale = self.contentsScale;UIGraphicsImageRenderer *renderer = [[UIGraphicsImageRenderer alloc] initWithSize:self.bounds.size format:format];UIImage *image = [renderer imageWithActions:^(UIGraphicsImageRendererContext * _Nonnull rendererContext) {CGContextRef context = rendererContext.CGContext;if (self.opaque) {CGSize size = self.bounds.size;size.width *= self.contentsScale;size.height *= self.contentsScale;CGContextSaveGState(context); {if (!self.backgroundColor || CGColorGetAlpha(self.backgroundColor) < 1) {CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);CGContextAddRect(context, CGRectMake(0, 0, size.width, size.height));CGContextFillPath(context);}if (self.backgroundColor) {CGContextSetFillColorWithColor(context, self.backgroundColor);CGContextAddRect(context, CGRectMake(0, 0, size.width, size.height));CGContextFillPath(context);}} CGContextRestoreGState(context);}task.display(context, self.bounds.size, ^{return NO;});}];self.contents = (__bridge id)(image.CGImage);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/157111.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C练习题_15

一、单项选择题(本大题共20小题&#xff0c;每小题2分&#xff0c;共40分。在每小题给出的四个备选项中&#xff0c;选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。) 在下列说法中&#xff0c;&#xff08;&#xff09;是正确的。 A.C程序从第一个函数开始…

Cache学习(1):常见的程序运行模型多级Cache存储结构

0 背景&#xff1a;常见的程序运行模型&#xff08;为什么要Cache&#xff09; 主存&#xff1a;Main Memory&#xff0c;硬件实现为RAM&#xff0c;产品形态&#xff1a;DDR&#xff08;例如&#xff1a; DDR3、DDR4等&#xff09;磁盘设备&#xff1a;Flash Memory&#xff…

IDEA如何将本地项目推送到GitHub上?

大家好&#xff0c;我是G探险者。 IntelliJ IDEA 是一个强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;它支持多种编程语言和工具。它也内置了对Git和GitHub的支持&#xff0c;让开发者可以轻松地将本地项目推送到GitHub上。以下是一个操作手册&#xff0c;描述了…

39.组合总和

原题链接&#xff1a;39.组合总和 思路&#xff1a; 依旧是遍历整棵树&#xff0c;此时终止条件变为总和sum大于给定的target值 或者等于target 就进行回溯 全代码&#xff1a; class Solution { public:vector<vector<int>> result;vector<int> path;voi…

Ubuntu下载离线安装包

旧版Ubuntu下载地址 https://old-releases.ubuntu.com/releases/ 下载离线包 sudo apt-get --download-only -odir::cache/ncayu install net-tools下载snmp离线安装包 sudo apt-get --download-only -odir::cache/root/snmp install snmp snmpd snmp-mibs-downloadersudo a…

idea开发jface、swt环境搭建

背景 jface、swt很难找到合适的maven仓库来下载配套的版本idea对eclipse套件不友好eclipse的windowbuilder固然很好&#xff0c; 但本人更喜欢idea编程&#xff0c; 互相取长补短 下载套件 进入swt下载界面 以当前最新的4.29为例&#xff0c; 点击&#xff1a; 找到全部并…

【brpc学习实践四】异步请求案例详解

注意 使用的还是源码的案例&#xff0c;添加个人注解。在前面的篇章我们讲解了客户端、服务端rpc构造的基本流程及同步、异步的案例基础之后&#xff0c;再理解此案例就容易了。 想直接看案例实现请看&#xff1a; server端实现 client端实现 服务端要点概览 controller ser…

webpack配置自动压缩图片

手动压缩图片 图片压缩是很重要的前端优化&#xff0c;一般可以选择手动压缩 手动压缩网站 webpack压缩图片 这里记录借助webpack的image-webpack-loader实现自动压缩图片 项目是create-react-app搭建的&#xff0c;webpack5.64.4 1、安装相应loader npm i image-webpack…

Leangoo领歌免费Scrum管理工具私有部署

​​​​​​​Leangoo领歌​​​​​​​是一款永久免费的专业的敏捷开发管理工具&#xff0c;提供端到端敏捷研发管理解决方案&#xff0c;涵盖敏捷需求管理、任务协同、进展跟踪、统计度量等。 Leangoo领歌上手快、实施成本低&#xff0c;可帮助企业快速落地敏捷&#xff0c…

人工智能在医疗行业一些应用

人工智能在很多年前就医疗行业广泛使用 2000年&#xff0c;俺刚参加工作时&#xff0c;公司就在做这方面的应用。是一个医疗“转录”系统。先介绍一下具体背景&#xff1a;医生有着录不完那些电子病历&#xff08;在美国一个外科医生&#xff0c;上完高中之后&#xff0c;最快…

2022最新版-李宏毅机器学习深度学习课程-P49 GPT的野望

GPT→类似于Transformer Encoder 训练任务&#xff1a;Predict Next Token 使用MASK-attention&#xff0c;不断预测“下一个token”。 可以用GPT生成文章。 How to use GPT? 给出描述和例子 给出前半段&#xff0c;补上后半段 In-context Learning(no GD) 结果 目前看起…

vue3 uniapp h5 安卓和iOS开发适配踩坑记录

font-size适配屏幕大小及iOS和安卓状态栏及安全距离的处理 App.vue <script setup lang"ts"> import { onLaunch, onShow, onHide } from "dcloudio/uni-app"; import ./main.scss onLaunch(() > {console.log("App Launch");var wid…

广西桂林钢结构钣金折弯件3d扫描全尺寸偏差检测-CASAIM中科广电

钣金是一种针对金属薄板&#xff08;通常在6mm以下&#xff09;的综合冷加工工艺&#xff0c;包括剪、冲/切/复合、折、焊接、铆接、拼接、成型&#xff08;如汽车车身&#xff09;等&#xff0c;其显著的特征就是同一零件厚度一致&#xff0c;通过钣金工艺加工出的产品叫做钣金…

uni-app:实现request请求的递归(设置request请求的访问次数),并且调用自定义方法给出返回值

一、效果展示 失败效果 成功效果 二、写入后端请求部分 分析 ①自定义一个模块common.js主要用于封装所有的请求函数 ②核心代码 function requestWithRetry(cmd, username, password, retryCount) {return new Promise((resolve, reject) > {uni.request({url: ip sys…

Openlayer【三】—— 绘制多边形GeoJson边界绘制

1.1、绘制多边形 在绘制多边形和前面绘制线有异曲同工之妙&#xff0c;多边形本质上就是由多个点组成的线然后连接组成的面&#xff0c;这个面就是最终的结果&#xff0c;那么这里使用到的是Polygon对象&#xff0c;而传给这个对象的值也是多个坐标&#xff0c;坐标会一个个的…

抖音本地生活服务商申请怎么做?无保证金的申请方法来了

想做抖音的本地生活服务项目&#xff0c;却不知道去哪里申请&#xff0c;或者如何申请&#xff0c;其实&#xff0c;官方的通道在今年上半年还是有的&#xff0c;自己去平台上提交资料申请就可以了&#xff0c;但需要缴纳高额的保证金。 而在今年下半年&#xff0c;平台已经关…

揭秘MySQL SLEEP()函数:避免这些常见误区,不再被时间迷惑!

点击上方蓝字关注我 关于MySQL sleep()函数&#xff0c;很多同学会觉得这个很简单&#xff0c;但是在和研发同学沟通时发现&#xff0c;很多人对此函数存在误解&#xff0c;本文举3个典型的例子进行说明。 1.误区一 以下SQL的运行结果是什么样的 SELECT NOW(),SLEEP(2),NOW()&a…

redis的数据类型的增删改查

redis的高可用 在集群中有一个非常重要的指标&#xff0c;提供服务的时间的百分比&#xff08;365天&#xff09;99.9% redis的高可用含义更加宽泛&#xff0c;正常服务是指标之一&#xff0c;数据容量的扩展&#xff0c;数据的安全性 在redis中实现高可用技术 持久化&…

Prometheus监控mysql nginx tomcat 黑盒监控

部署consul_exporter https://github.com/prometheus/consul_exporter/releases/download/v0.9.0/consul_exporter-0.9.0.linux-amd64.tar.gz 注册 ootubuntu20:~# cat consul_export.json rootubuntu20:~# cat consul_export.json {"services": [{"id"…

手机上玩.NET的两种方式

少见&#xff01;手机上玩 .NET_哔哩哔哩_bilibili 小米平板敲代码&#xff0c;termux安装dotnet和vscode_哔哩哔哩_bilibili 都是先容器加载linux rootfs&#xff0c;然后安装 linux-arm64 版本的 dotnet 命令行方式运行 dotnet&#xff0c;代码编辑到是可以安装使用 vscode…