UILabel获取CGRect作为文本的子string

我的目标很简单:从UILabel中获取标签文本中子string的矩形。 从广泛的search,似乎没有任何内置来处理这个。 其他人也问过类似的问题,但没有一个已经在这里完全回答了Stackoverflow。

// Something like this perhaps (added as a category) CGRect rect = [myLabel rectForRange:NSMakeRange(3, 5)]; 

它可以用来做什么的例子(只是为了澄清我在寻找什么):

矩形的例子

这主要是一个字符rects需要,所以我疯了,写了一些代码,可以准确地计算最基本的UILabel矩形。 标准的UILineBreakMode和文本alignment。

我希望如果我把它发布给公众,人们对它的贡献和改进,特别是因为我对文本渲染知之甚less。

代码:

https://gist.github.com/1278483

你是对的:这不是UILabel的内置部分。

如果你真的需要这个,使用子类UILabel ,使用CoreText来实现-drawRect:你将能够通过CTLineGetOffsetForStringIndex()CTFrameGetLineOrigins()CTLineGetTypographicBounds()来计算一个范围的矩形 。 如果范围内的文本被排列成越过换行符,这将变得复杂; 你可能会想要多个rects。