当前位置: 首页 > news >正文

NSAttributedString设置折行方式NSLineBreakByTruncatingTail,计算高度出错,高度返回异常。

iOS13上,NSAttributedString设置折行方式NSLineBreakByTruncatingTail,计算高度出错,只返回一行的高度。

NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc]init];

style.hyphenationFactor = 1;  // 设置每行的最后单词是否截断,在0.0-1.0之间,默认为0.0,越接近1.0单词被截断的可能性越大, 

设置hyphenationFactor=1,在计算就返回正常高度了。

如果设置不起效。换下面的方法

找到了解决方案。只需将 NSMutableParagraphStyle 上的 setAllowsDefaultTighteningForTruncation 设置为 YES。

参考 cocoa - Making NSTextField not shrink when NSLineBreakByTruncatingTail is set - Stack Overflow

    NSString *highlightTitle = title;//转换参数NSDictionary *options = @{ NSDocumentTypeDocumentAttribute : NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute :@(NSUTF8StringEncoding) };//将html文本转换为正常格式的文本NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithData:[highlightTitle dataUsingEncoding:NSUnicodeStringEncoding] options:options documentAttributes:nil error:nil];[attributedString removeAttribute:NSParagraphStyleAttributeName range: NSMakeRange(0, attributedString.length)];[attributedString addAttribute:NSFontAttributeName value:font range:NSMakeRange(0, attributedString.length)];NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];//    paragraphStyle.hyphenationFactor = 1;[paragraphStyle setLineSpacing:space];paragraphStyle.lineBreakMode = NSLineBreakByTruncatingTail;[paragraphStyle setAllowsDefaultTighteningForTruncation:YES];[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [attributedString length])];return attributedString;

相关文章:

  • 日本服务器访问速度和带宽有没有直接关系?
  • 多级嵌套vue同步调用用法
  • 【点云surface】 凹包重构
  • seccomp学习 (3)
  • Navicat 技术指引 | 适用于 GaussDB 的备份与还原功能
  • CDA一级备考思维导图
  • 解密人工智能:线性回归 | 逻辑回归 | SVM
  • Kafka-Consumer
  • hdlbits系列verilog解答(exams/m2014_q4i)-45
  • 大模型训练效率提升至2.6倍,腾讯Angel机器学习框架升级
  • ElasticSearch之配置
  • 怎样提升伦敦银买卖技巧?
  • webshell之内置函数免杀
  • 大数据面试大厂真题【附答案详细解析】
  • 03 图优化
  • JavaScript 如何正确处理 Unicode 编码问题!
  • 【知识碎片】第三方登录弹窗效果
  • Android优雅地处理按钮重复点击
  • CSS魔法堂:Absolute Positioning就这个样
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • Java,console输出实时的转向GUI textbox
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • linux安装openssl、swoole等扩展的具体步骤
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • Python利用正则抓取网页内容保存到本地
  • QQ浏览器x5内核的兼容性问题
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • 机器学习学习笔记一
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 学习HTTP相关知识笔记
  • 走向全栈之MongoDB的使用
  • puppet连载22:define用法
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • (3)(3.5) 遥测无线电区域条例
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (zt)最盛行的警世狂言(爆笑)
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (分布式缓存)Redis持久化
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (理论篇)httpmoudle和httphandler一览
  • (数据结构)顺序表的定义
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • **PHP分步表单提交思路(分页表单提交)
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .net 流——流的类型体系简单介绍
  • .NET学习教程二——.net基础定义+VS常用设置
  • @ModelAttribute注解使用
  • [ vulhub漏洞复现篇 ] struts2远程代码执行漏洞 S2-005 (CVE-2010-1870)
  • [ 云计算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹
  • [.NET]桃源网络硬盘 v7.4
  • [2016.7 day.5] T2
  • [4.9福建四校联考]