我的目标很简单:从UILabel中获取标签文字中的子字符串的矩形。经过广泛搜索,似乎没有内置的东西来处理这个问题。其他人也问了类似的问题,但都没有在Stackoverflow上得到完整的答案。
// Something like this perhaps (added as a category)
CGRect rect = [myLabel rectForRange:NSMakeRange(3, 5)];
以下是一个使用示例(只是为了澄清我要搜索的内容):
我的目标很简单:从UILabel中获取标签文字中的子字符串的矩形。经过广泛搜索,似乎没有内置的东西来处理这个问题。其他人也问了类似的问题,但都没有在Stackoverflow上得到完整的答案。
// Something like this perhaps (added as a category)
CGRect rect = [myLabel rectForRange:NSMakeRange(3, 5)];
以下是一个使用示例(只是为了澄清我要搜索的内容):
这主要是针对单个字符矩形而需要的,所以我疯狂地编写了一些代码,可以准确计算最基本的UILabel的矩形。标准的UILineBreakMode和文本对齐方式。
我希望如果我将其发布给公众,人们可以贡献并改进它,特别是因为我不太了解文本渲染!
代码如下:
没错:这不是 UILabel
的内置部分。
如果你确实需要这个功能,可以子类化 UILabel
,使用 CoreText
实现 -drawRect:
,然后通过 CTLineGetOffsetForStringIndex()
、CTFrameGetLineOrigins()
和 CTLineGetTypographicBounds()
计算范围的矩形。如果该范围中的文本跨越了换行符,则会变得复杂;您可能需要多个矩形。