从 html 创建 nsattributedstring 时,ios7 字体大小发生变化

2024-01-03

我有一个 UITextView,我在其中管理一个 NSAttributedString,最初通过键盘正常输入。我将属性字符串保存为 HTML,看起来不错。 当我再次加载它并将其从 HTML 转换回属性字符串时,字体大小似乎发生了变化。

例如,加载时的 HTML 如下所示:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<title></title>
<meta name="Generator" content="Cocoa HTML Writer">
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 21.0px Helvetica; color: #000000; -webkit-text-        stroke: #000000}
span.s1 {font-family: 'Helvetica'; font-weight: normal; font-style: normal; font-size:     21.00pt;     font-kerning: none}
</style>
</head>
<body>
<p class="p1"><span class="s1">There is some text as usual lots of text</span></p>
</body>
</html>

我使用以下代码对其进行转换并检查属性:

    // convert to attributed string
    NSError *err;
    NSAttributedString *as = [[NSAttributedString alloc] initWithData:data3
                            options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
                                      NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)}
                            documentAttributes:nil
                            error:&err] ;

    NSMutableAttributedString *res = [as mutableCopy];
    [res enumerateAttribute:NSFontAttributeName inRange:NSMakeRange(0, res.length) options:0 usingBlock:^(id value, NSRange range, BOOL *stop) {
        if (value) {
            UIFont *oldFont = (UIFont *)value;
            NSLog(@"On Loading: Font size %f, in range from %d length %d", oldFont.pointSize, range.location, range.length);
        }
    }];

输出显示字体大小已从 21 增加到 28:

On Loading: Font size 28.000000, in range from 0 length 40
On Loading: Font size 21.000000, in range from 40 length 1

基本上,每次加载字符串时,字体大小都会增加。我需要将其存储为 HTML 而不是 NSData,因为它也会被其他平台使用。

有谁知道为什么会发生这种情况?


我也遇到了这个问题,我通过迭代属性并重置旧字体大小来修复它,如下所示

NSMutableAttributedString *res = [attributedText mutableCopy];
[res beginEditing];
[res enumerateAttribute:NSFontAttributeName
                inRange:NSMakeRange(0, res.length)
                options:0
             usingBlock:^(id value, NSRange range, BOOL *stop) {
                 if (value) {
                     UIFont *oldFont = (UIFont *)value;
                     UIFont *newFont = [oldFont fontWithSize:15];
                     [res addAttribute:NSFontAttributeName value:newFont range:range];
                 }
             }];
[res endEditing];
[self.textFileInputView setAttributedText:res];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 html 创建 nsattributedstring 时,ios7 字体大小发生变化 的相关文章

  • 拖放 HTML5 jQuery:带有 JSON 的 e.dataTransfer.setData()

    这是我的拖拽 dragstart function e this css opacity 0 5 e dataTransfer effectAllowed move e dataTransfer setData application js
  • MP4 视频无法在 Firefox 上播放

    我有一个小型家庭服务器 可以托管多个项目 其中包括一些 MP4 示例视频 我一直在使用一个简单的
  • 内容安全策略:页面设置阻止自行加载资源?

    我有基于 Java 的 Web 应用程序运行在Tomcat http en wikipedia org wiki Apache Tomcat6 我的应用程序在本地主机和端口 9001 上运行 为了使我的应用程序更加安全并降低风险XSS ht
  • javascript 中一次仅选中一个复选框

    I have 3复选框 我只想1一次选中的复选框 下面是我的 html 小提琴 JS小提琴 https jsfiddle net n03jLhqa 我想要这个工作在IE8还请建议如何做 这个怎么样 fiddle http jsfiddle
  • Modernizr 未将类应用于 html 标签

    我目前正在构建一个网站 我需要使用 Modernizr 但由于某种原因 它没有将类应用到 html 标签 因为它应该 我的代码如下所示
  • 具有相等宽度和高度 TD 的响应式表格

    如何创建每个单元格 TD 具有相同宽度和高度的响应式 HTML 表格 因此 当我调整浏览器窗口的大小或调整表格容器的大小时 表格将调整大小 但每个单元格将具有相同的高度和宽度 基金会不关心这个 当我用固定宽度和高度 以像素为单位 初始化 T
  • 如何应用 EXIF 定位

    我注意到并不是每个浏览器都应用 EXIF 方向 我的手机上的 Chrome 不应用 EXIF 方向 但 Safari 手机则应用 那么既然它不是标准的 那么如何在 Safari 上应用 EXIF 方向而不应用两次呢 另外我想知道是否可以在客
  • XHR加载视频

    在不详细了解我为什么使用 XHR 的情况下 谁能告诉我如何让以下内容发挥作用 我的目标是首先加载视频数据 然后将其放入视频标签的源中 http jsfiddle net u2vhG http jsfiddle net u2vhG
  • 可以设置选择元素的样式,以便在下拉列表“关闭”时显示所选选项的样式吗?

    鉴于这个简单的 html
  • 如何将 HTML 表单的值放入“自定义”URL 中?

    在我的网站上 我可以通过访问 mysite com search search term 来访问搜索功能 其中 search term 是用户输入的术语 我正在尝试获取一个简单的单输入表单来以这种方式格式化 URL 我可以做到的一种方法是制
  • 避免 Django 中表单输入元素 ID 重复

    当一页上的两个表单具有相同名称的字段时 Django 将生成无效的 HTML
  • For 循环覆盖 HTML 中的文本

    我的数组称为myEmployees其中有 5 个名字 但当我运行代码时 它只打印出其中的 3 个 我相信这种情况正在发生 因为for脚本中的循环会覆盖它在 HTML 文档中编写的前一行 我怎样才能解决这个问题 年度公告板公告 恭喜泰勒 你在
  • 如何将内部 div 与外部 div 的底部对齐?

    我需要将内部 div 与外部 div 的底部对齐 我的代码如下所示 div class myOuterDiv div class div1 floatLeft Variable content here div div class div2
  • 图像在 IE8 中不显示

    在我的网站上 http appliedcodingtech com site factory automation photos http appliedcodingtech com site factory automation phot
  • 如何将身份验证详细信息传递给 iframe 内的应用程序?

    我有一个网页 想在其中显示詹金斯的网页 因此使用iframe like But http xxx xxx xx xx 8080 view Nightly 20Builds 20 打开登录页面 因此无法直接显示内容 其实我想在没有登录的情况下
  • svg路径指针事件-点击检测

    我正在编写一些 HTML 以便可以使用 HTML SVG 和 PATH 标签绘制贝塞尔曲线 我的曲线效果非常好 现在我想添加一项功能 如果用户将鼠标悬停在曲线上 我会更改颜色 但实际情况是 SVG 创建了一个包含路径的大框 并捕获所有点击
  • 如何使用 Nokogiri 漂亮地打印 HTML?

    我用 Ruby 编写了一个网络爬虫 并且正在使用Nokogiri HTML来解析页面 我需要打印该页面 在 IRB 中闲逛时 我注意到一个pretty print方法 然而它需要一个参数 我不知道它想要什么 我的爬虫正在缓存网页的 HTML
  • 从动态服务器中抓取 html 列表数据

    哈喽大家好 抱歉提出转储问题 这是我最后的手段 我发誓我尝试了无数其他 Stackoverflow 问题 不同的框架等 但这些似乎没有帮助 我有以下问题 一个网站显示一个数据列表 前面有大量的 div li span 等标签 它是一个很大的
  • Div 上的倾斜边框

    我正在尝试倾斜一个 div 类似于 使用 css 倾斜 div 的顶部而不倾斜文本 https stackoverflow com questions 13591584 slant the top of a div using css wi
  • 为 CocoaPods 插件设置 Xcode

    我正在尝试设置终端 Xcode 以便正确工作Xcode CocoaPods 插件 https github com kattrali cocoapods xcode plugin 当我从插件运行集成 cocoapods 选项时 我收到一条消

随机推荐

  • EPPlus 依赖循环

    从 PowerShell 安装 EPPlus 时 我得到以下信息 所有命令都是第一次运行 PackageSource Get PackageSource Name PSGallery if PackageSource IsTrusted S
  • 如何在 django 视图中将一个页面重定向到另一个页面时延迟 5 秒

    我使用了这段代码 但我想要的延迟没有实现 我希望它在那里停留至少 5 秒 from django http import HttpResponseRedirect def myview request return HttpResponse
  • mysqli_real_escape_string 安全吗?

    我是 PHP 新手 我意识到使用 php 表单 带有用户和传递文本输入 的数据库连接是完全不安全的 这是可行的 但不安全 所以 我读过有关 mysqli real escape string 的内容 并决定尝试一下
  • laravel 5.4 MIME 自定义错误消息不起作用?

    Dearest 我想为上传的图像制作自定义错误消息 这是我的控制器代码 protected function validator data validateContent messages imgUserAvatar mimes gt Fi
  • Riverpod:摄取 REST API 的简单方法

    我目前正在构建一个应用程序 该应用程序摄取 WordPress REST API 来显示博客文章 在初始应用程序加载时 我希望它使用一种方法提取初始数据 然后通过用户交互提取更多帖子 我目前正在进行这项工作 但是 我的实现似乎很复杂 并且可
  • 如何计算 PySpark 中行之间的差异?

    这是我在 PySpark 中的数据框 utc timestamp data feed 2015 10 13 11 00 00 00 00 1 A 2015 10 13 12 00 00 00 00 5 A 2015 10 13 13 00
  • OpenShift 中水平 pod 自动缩放器的自定义指标

    我正在使用 openshift v3 它使用 kubernetes 版本 1 2 我正在探索更多有关自动缩放功能的信息 目前它表示仅支持 CPU 指标 有没有一种方法可以根据内存或从 heapster 收集的其他指标数据来扩展 opensh
  • 如何等待ajax请求?

    我正在尝试编写一个 JS 代码 如果给定的数字已存在于数据库中 该代码将取消 btn submit 按钮 onclick 事件 我使用 AJAX 查询数据库中的给定数字 并确定是否应将数据发送到将上传问题的 php 站点 为了确定这一点 我
  • 在 Python 2.7 中复制 Java 的 PBEWithMD5AndDES

    如果这不是很明显 我首先要说的是我不是加密货币人士 我的任务是在 Python 2 7 中复制 Java 的 PBEWithMD5AndDES 具有 DES 加密的 MD5 摘要 的行为 我确实可以访问 Python 的加密工具包 PyCr
  • Python if语句无法识别蓝牙信标

    这是 BeaconScanner py 文件用来查找和列出 ble 信标的 ScanUtility py 文件 This is a working prototype DO NOT USE IT IN LIVE PROJECTS impor
  • IActionDelegate 的 SelectionChanged() 未被调用

    我有一个动作类 我想根据文件扩展名启用它 我把这个逻辑写在selectionChanged 动作类的 但是当我启动 Eclipse 并单击上下文菜单的文件时 不会调用此方法 当我单击任何操作时 单击该文件后都会调用selectionChan
  • 相当于 Unix tail 命令的 Windows [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我正在寻找相当于 Unix tail 命令的命令 它允许我在写入日志文件时观察日志文件的输出 如果您使用 PowerShell 那么这有效 Get C
  • T-SQL Puzzler - 爬取对象依赖关系

    此代码涉及递归存储过程调用和避免游标名称冲突的 不太好 的方法 最后我不在乎它是否使用游标 只是寻找最优雅的方法 我主要将其用作跟踪存储过程层次结构的简单方法 无需购买产品 我在 动态sql 中尝试了游标 但运气不佳 我想深入大约 10 层
  • iOS Google Plus 集成和共享

    我正在尝试将我的应用程序中的内容分享到 Google Plus 为此 我使用了以下代码 IBAction handleGPlus id
  • docker rmi 无法删除镜像,并且:没有这样的 id

    我有很多图像 当我尝试删除它们时docker rmi sudo docker rmi acd33a9490dc Error response from daemon No such id 75ce1f6710bab109a7d7cbee05
  • C++ 对非 const 对象的 const 引用和对非 const 对象的非 const 引用之间的区别

    如果引用的对象不是 const 对象 则引用的 const 关键字的用途是什么 r1 和 r2 的作用 如下 有什么区别吗 int i 42 non const object const int r1 i const reference t
  • 从 UNION 创建临时表时遇到问题

    我有一个 UNION 语句 它本身执行得很好 SELECT 1999999999 AS MobileNo Test AS FirstName Last AS LastName 268 AS TemplateID AS MISC1 AS MI
  • 获取 UILabel 中的行数

    针对同一问题的许多旧解决方案已被弃用 UILineWordWrap 仅举一个已弃用的解决方案 我还发现其中一些不可靠 那么 在IOS 8中 我应该如何找到uilabel中的行数呢 As of iOS8 您可以使用 NSString boun
  • 我可以在 Linux 中进行写时复制 memcpy 吗?

    我有一些代码 我经常复制一大块内存 通常是在对其进行很小的更改之后 我已经实现了一个跟踪更改的系统 但我认为如果可能的话 告诉操作系统对内存进行 写时复制 并让它只处理这些部分的副本 这可能会很好哪个改变 然而 虽然 Linux 确实进行了
  • 从 html 创建 nsattributedstring 时,ios7 字体大小发生变化

    我有一个 UITextView 我在其中管理一个 NSAttributedString 最初通过键盘正常输入 我将属性字符串保存为 HTML 看起来不错 当我再次加载它并将其从 HTML 转换回属性字符串时 字体大小似乎发生了变化 例如 加