iPhone CoreText:查找子字符串的像素坐标

2024-03-31

这是 Twitter 应用程序的屏幕截图供参考:http://screencast.com/t/YmFmYmI4M http://screencast.com/t/YmFmYmI4M

我想要做的是将浮动弹出窗口放置在可以跨越多行的 NSAttributedString 中的子字符串顶部。 NSAttributedString 是该项目的要求。

在提供的屏幕截图中,您可以看到链接是背景突出显示的,因此这让我相信它们正在使用 CoreText 和 NSAttributedString。我还发现了一个叫做 CTRunRef 的东西(http://developer.apple.com/library/ios/#documentation/Carbon/Reference/CTRunRef/Reference/reference.html http://developer.apple.com/library/ios/#documentation/Carbon/Reference/CTRunRef/Reference/reference.html)看起来很有希望,但我在概念上无法将它们组合在一起。

简而言之,如果我在核心文本中有一个段落,当我点击一个单词时,如何找到该单词的边界框?


在属性字符串中设置一些属性,该属性不会影响显示,但会导致其布局为单独的字形运行,然后使用 CoreText 布局字符串

CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString(attrString);
CTFrameRef ctframe = CTFramesetterCreateFrame(framesetter, CFRangeMake(0, 0), path, NULL);

现在,您必须在框架中寻找相关的文本块。获取数组CTLineRefs with CTFrameGetLines().

迭代数组,通过检查触摸是否位于该行返回的矩形内来测试触摸是否在该行上CTLineGetImageBounds()。如果是,现在查看该行中的字形。

同样,你可以获得一个数组CTRunRefs with CTLineGetGlyphRuns()。检查水龙头是否在字形运行内CTRunGetImageBounds(),如果是的话,您可以在字形运行对应的原始属性字符串中找到索引范围CTRunGetStringIndices().

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iPhone CoreText:查找子字符串的像素坐标 的相关文章

  • 使用 UItableViewCell 类型的表达式初始化“CustomCellView *”的指针类型不兼容

    你能帮我理解和 修复下面的错误吗 我不明白CustomCellView是一个子类UItableViewCell 代码已编译 但警告仍然存在 Incompatible pointer type initializing CustomCellV
  • iPhone 3GS 上的 ARM 与 Thumb 性能比较,非浮点代码

    我想知道是否有人有关于 iPhone 3GS 上 ARM 与 Thumb 代码性能的硬性数据 特别是对于非浮点 VFP 或 NEON 代码 我知道 Thumb 模式下的浮点性能问题 更大的 ARM 指令的额外代码大小是否会在某个时刻成为性能
  • 在回调函数中调用目标c函数

    如何在回调函数中调用目标c函数 回调函数 static OSStatus inputRenderCallback void inRefCon AudioUnitRenderActionFlags ioActionFlags const Au
  • iPhone SQLite页面缓存不断增长

    I use sqlite数据库用于存储 还有许多数据库事务 我的问题是 sqlite 页面缓存的内存使用量快速增长 在instruments我可以找到这条线 Graph Category Live Bytes Living Transien
  • iPhone SDK中的短信正文

    我需要从我的 iPhone 应用程序发送短信 SMS 的正文是以编程方式创建的 因此 当我点击按钮时 短信应用程序应该打开 并在其中预先输入我的消息 有人知道怎么做吗 需要帮忙 提前致谢 世宾 您无法设置短信正文 根据官方 SDK 您可以从
  • 如何在 iOS 上固定证书的公钥

    在提高我们正在开发的 iOS 应用程序的安全性时 我们发现需要对服务器的 SSL 证书 全部或部分 进行 PIN 操作以防止中间人攻击 尽管有多种方法可以做到这一点 但当您搜索此内容时 我只找到了固定整个证书的示例 这种做法会带来一个问题
  • 在成为FirstResponder或resignFirstResponder的情况下将对象保持在键盘顶部?

    我目前在键盘顶部有一个 UITextField 当您点击它时 它应该粘在键盘顶部并平滑地向上移动 我不知道键盘的具体时长和动画类型 所以确实很坎坷 这是我所拥有的 theTextView resignFirstResponder UIVie
  • 重新启动应用程序时出现异常 SIGKILL

    我在 iPhone 模拟器中构建并运行一个项目 我通过按主页按钮将其发送到后台 然后我双击主页按钮在后台找到我的应用程序并点击它 它变得活跃并且应用程序继续运行 在这里 无论我重复多少次 我都没有问题 然后我通过点击应用程序图标上的红色小减
  • iPhone/Objective-C - 呈现视图和委托时的 UIDocumentInteractionController 类参考

    我在用UIDocumentInteractionController在我的应用程序中 以便在我的应用程序中呈现 Instagram 过滤器屏幕 如下所述 http instagram com developer iphone hooks h
  • 以编程方式在 App Store 上运行搜索?

    是否可以从我的应用程序中打开 App Store 应用程序并运行搜索 我想看看是否有一个 appstore 类型的 URL 可以使用 就像 mailto 和 sms 分别打开邮件和短信一样 有谁知道这是否可能 编辑 更多信息 我一直在尝试使
  • 字符串列表,获取n个元素的公共子串,Python

    我的问题可能类似于this https stackoverflow com questions 37514193 count the number of occurrences of n length not given string in
  • AVCaptureSession 具有多个方向问题

    我正在尝试实现条形码扫描仪 我有一个 AVCaptureSession 它从 AVCaptureDevice 接收视频 我想支持所有方向 使用以下代码 当我运行应用程序时 纵向一切正常 然而 在横向方向上 视图会旋转 但视频输入不会旋转 所
  • 在 iOS 上使用 Web 服务的最佳方式?

    我想构建一个 iOS 应用程序 让您登录到网络服务 之后 应用程序将 当用户选择时 通过 https 发送登录名 密码以及请求的变量 例如 在请求 新闻更新 后 它将收到 XML 格式的请求信息 类似于
  • 将 Array Obj-c 的内容转储到控制台

    我寻找了如何转储和数组到我主要找到的控制台 for id name in arrayStuff NSLog Array contents d name 我尝试了不同的格式化程序 d g 等 它们确实打印了不同的内容 但不是我 99 确信被输
  • 当 UITextField 已满或空时显示警报 Swift

    下面的代码中 如果 userNameTF 或 passwordTF 已满或为空 则会显示警报 IBAction func LoginBtn sender AnyObject let userName userNameTF text let
  • iOS 中的 CSV 逐行解析

    我正在 Objective c 中解析 CSV 文件 该文件包含如下内容 line 40 Rising searches line 41 nabi avc Breakout line 42 stonewall 700 line 43 med
  • UIScrollView - 启用分页后,我可以“更改”页面宽度吗?

    将滚动视图 将 pagingEnabled 设置为 YES 将页面宽度设置为滚动视图边界以外的其他值的最简单方法是什么 让我举个例子 假设我有一个包含 10 个项目的滚动视图 每个项目的宽度为 150 像素 而我的滚动视图的宽度为 300
  • 在 UIImage 顶部绘制透明圆圈 - iPhone SDK

    我在尝试找出如何在 UIImageView 中的 UIImage 顶部绘制透明圆圈时遇到了很多麻烦 谷歌给了我线索 但我仍然找不到有效的例子 有没有人知道的例子可以证明这一点 最简单的方法就是创建一个半透明的方形 UIView 然后将其图层
  • WhatsApp 显示警告“此项目无法共享。请选择其他项目。”对于 iOS 应用程序。

    我正在开发一个 iOS 应用程序 在该应用程序中 我有社交共享功能 并且社交共享功能使用深度链接来共享 URL 该网址共享对于所有应用程序都运行良好 除了WhatsApp 它会显示一个警报弹出窗口 此项目无法共享 请选择其他项目 以下是我的
  • 苹果推送通知在生产中不起作用

    我们完全陷入困境 请帮忙 我和我的团队制作了一个 iPhone 应用程序 这是我们第一次在 iOS 上尝试 一切都很好 直到我们提交应用程序并在应用程序商店上可用为止 推送通知服务无法正常工作 我在网上搜索并尝试根据人们的建议仔细检查我们的

随机推荐

  • 为什么 Python 将制表符视为 8 个空格?

    使用 4 个空格的制表符宽度已成为编程中的主要选择 那么为什么 Python 不将制表符视为 4 个空格而不是 8 个空格呢 这个设计决定有 技术 历史 其他 原因吗 感觉这可以让开发人员免于因缩进不一致而苦苦挣扎 由于Linux控制台中默
  • 使用请求方法登录Cypress

    我注册并登录用户 但是 当在测试中导航到身份验证后面的页面时 Cypress 失败并将我带回登录页面 从它的外观来看 before函数已成功执行 由 API 日志验证 这是我的代码 describe Dashboard page gt be
  • 切换到相同数据类型的对象后,DataTemplate 不刷新

    我有以下ControlTemplate
  • 如何在 Java 或 Python 中使用文件系统缓存?

    A 最近关于 Elasticsearch 的博客文章 http www elasticsearch org blog elasticsearch 1 4 0 beta released 网站正在谈论他们新的 1 4 beta 版本的功能 我
  • 创建不兼容的数字子类型

    在 Ada 中 可以创建不兼容的等效数字类型 type Integer 1 is range 1 10 type Integer 2 is range 1 10 A Integer 1 8 B Integer 2 A illegal 这可以
  • 在 if 语句中使用 or (Python) [重复]

    这个问题在这里已经有答案了 我只是写一个简单的 if 语句 仅当用户键入 Good 时 第二行才计算为 true 如果 太棒了 输入后 它将执行 else 语句 我可以不使用或喜欢这个吗 我需要逻辑还是 weather input How
  • 我在 Visual Studio 中的项目是只读的。我做了什么?

    我一定是做错了什么 我在 Visual Studio 2008 中有一个 C 项目 突然 我看到我的类上有一个锁 当我将类名称悬停在顶部选项卡上时 我看到类名称为 C Myprojects Oder cs 只读 你以前发生过类似的奇怪事情吗
  • 未根据 OPTIONS 请求发送 Cookie

    对于我正在开发的 Angular 1 应用程序 使用了 cookie 身份验证 问题是 制作时OPTIONS调用 cookie 不会发送 服务器会尝试重定向用户以再次登录 只是想知道 这是谁的 错 服务器 Azure API 应用程序 还是
  • 错误:“_UserObject”对象没有属性“预测”

    我正在构建一个针对数据序列进行机器学习的 ANN 模型 当我调用模型来验证测试数据时 出现错误 model Sequential model add Dense 8 activation tanh input dim 10 model ad
  • PowerShell 脚本问题运算符

    我尝试在部署更新的驱动程序之前使用 PowerShell 检测 Intel NIC 驱动程序 我对脚本进行了一些更改以进行故障排除 以确保捕获正确的驱动程序版本 并最终验证操作符的正确使用 我可能不是 Change DeployVersio
  • 如何迭代天数

    我有一个循环 days this 的代码来制作叶子 我希望列签到和签出出勤将自动填充 从开始日期开始 到结束日期结束 exp I input startdate 2012 11 08 01 30 00 enddate 2012 11 10
  • Javafx字体派生粗体

    我想为我的 javafx 应用程序动态更改 加载的 文本字体 所以我做了以下代码 Font font Font loadFont Fonts class getClassLoader getResource path font woff t
  • 将变量从 Symfony2 传递到 Angular 范围的最佳方法

    作为许多其他开发人员面临的常见场景 我们有一个基于 Symfony2 TWIG 的成熟应用程序 并且一些 html twig 模板因 jQuery 代码过多而难以维护 抛弃 jQuery 并使用 Angular 怎么样 假设我有一些关于 A
  • 如何覆盖 net core web api 中的 OnAuthorization?

    早些时候我在 asp net 中实现了类似的东西 public class Authentication AuthorizationFilterAttribute public override void OnAuthorization H
  • 需要使用 d3 geoPath.projection(null) 缩放已经投影的数据

    基于 d3 1 4 版 文档https github com d3 d3 geo blob master README md geoProjection https github com d3 d3 geo blob master READ
  • 如何在不使用 zip() 的情况下将不同类型的 Future 组合成一个 Future

    我想创造一个类型的未来Future Class1 Class2 Class3 从下面的代码 然而 我发现做到这一点的唯一方法是使用 zip 我发现这个解决方案很丑陋而且不是最佳的 谁能启发我 val v for a lt val f0 Fu
  • 如何把照片贴在墙上?

    有人成功地将图片发布到当前用户的墙上吗 这是行不通的 如果图片参数是现有的图片 url 则不会显示 我正在使用最新的 FB C SDK 5 0 8 Beta var args new Dictionary
  • 如何重新加载 vue 组件?

    我知道解决方案是像这样更新道具数据 this selectedContinent 但我想使用另一种解决方案 在我阅读了一些参考资料后 解决方案是 this forceUpdate 我尝试了一下 但不起作用 演示和完整代码如下 https j
  • 向 Google 仪表添加 % 符号

    我正在使用 Google 仪表 并且想在仪表中的值后面添加一个 符号 我的值显示良好 没有百分比符号 整数 0 100 但是当我开始尝试添加百分比符号时 事情变得不稳定 这是我尝试过的 Format the data to include
  • iPhone CoreText:查找子字符串的像素坐标

    这是 Twitter 应用程序的屏幕截图供参考 http screencast com t YmFmYmI4M http screencast com t YmFmYmI4M 我想要做的是将浮动弹出窗口放置在可以跨越多行的 NSAttrib