gpt4 book ai didi

ios - 获取使用 drawInRect 绘制的 NSString 中 x、y 位置的字符索引

转载 作者:行者123 更新时间:2023-11-28 22:50:41 24 4
gpt4 key购买 nike

我目前正在使用 NSString 的 drawInRect 来显示字体。然后将其上传到纹理以供 OpenGL 使用。

示例:

[String drawInRect:textRect withFont:font lineBreakMode:UILineBreakModeCharacterWrap     alignment:UITextAlignmentLeft];

我现在需要的是一种方法来确定单击 [x,y] 时字符的索引。因此,如果我传入 [0,0],它将返回索引 [0]。或者 [24,4] 会返回 5,例如。

执行此操作的一种方法是,如果我可以获得绘制的字形的各个边界框并遍历它们。

或者有没有更好的方法来绘制允许这种功能的文本?

最佳答案

用 NSString 和 NSAttributedString 绘图方法不可能做到这一点。我推荐三种制作可点击文本的方法之一:

1) Core Text PRO:速度很快,适用于旧版本的 iOS。缺点:它有很多样板。您必须创建非常冗长的文本属性的 NSDictionaries 以在创建属性字符串时使用,然后在 drawRect: 实现中使用这些属性字符串通过 创建 CTFrameSetter >CTFramesetterCreateWithAttributedString(),然后使用 frame-setter 创建一个 CTFrame,然后使用 CTFrame 绘制文本。哇!毕竟,您可以查询 CTFrame(通过更复杂的代码)以找到在给定 CGPoint 处点击的字符的索引。所有这一切都不是微不足道的设置。

2) TextKit PRO:它比 Core Text 更容易。缺点:它仅在 iOS 7 上可用。您可以使用 UITextView 及其新属性(NSLayoutManagerNSTextContainer)公开的方法, 获取给定 CGPoint 的字符串信息。

3) 使用 TTTAttributedLabel . PRO:这是最简单的,并且适用于旧版本的 iOS。缺点:它可能无法提供您需要的功能。

关于ios - 获取使用 drawInRect 绘制的 NSString 中 x、y 位置的字符索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12070685/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com