我的目标很简单:从UILabel获取标签文本中子字符串的矩形。从广泛的搜索来看,似乎没有内置任何东西来处理这个问题。其他人也提出了类似的问题,但是没有人在Stackoverflow上完全回答。
// Something like this perhaps (added as a category)
CGRect rect = [myLabel rectForRange:NSMakeRange(3, 5)];
它可以用于什么的一个例子(只是为了澄清我正在搜索的内容):
答案 0 :(得分:7)
这对于一个角色来说主要是需要的,所以我疯了,写了一些代码,可以准确地计算出最基本的UILabel的矩形。标准UILineBreakMode和文本对齐。
我希望如果我将它发布给公众,那么代码会对它做出贡献并改进它,特别是因为我对文本渲染知之甚少!
代码:
答案 1 :(得分:2)
你是对的:这不是UILabel
的内置部分。
如果您真的需要这个,UILabel
的子类,请使用CoreText
来实现-drawRect:
,您将能够compute the rect for a range via CTLineGetOffsetForStringIndex()
, CTFrameGetLineOrigins()
, and CTLineGetTypographicBounds()
。如果范围中的文本被布置为穿过换行符,则会变得复杂;你可能想要多个职位。