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。
代码:
你是对的:这不是UILabel
的内置部分。
如果你真的需要这个,使用子类UILabel
,使用CoreText
来实现-drawRect:
你将能够通过CTLineGetOffsetForStringIndex()
, CTFrameGetLineOrigins()
和CTLineGetTypographicBounds()
来计算一个范围的矩形 。 如果范围内的文本被排列成越过换行符,这将变得复杂; 你可能会想要多个rects。
- 如何应用没有Storyboard的本地化
- UITextView取消选中可选checkbox会在运行时导致文本问题
- 你的故事会是什么? 满足20天的代码:Swift Playgrounds项目,卢旺达,2016年。
- iOS中NSURLErrorCancelled = -999是什么?
- AFNetworking 2.0 POST问题,cocoa错误3840(JSON文本没有开始数组…)
- Swift 3 iOS – 与AVAudioPlayer同步暂停
- 我可以在Xcode 4的DeviceSupport文件夹中删除以前版本的iphone支持吗?
- iOS OpenGL ES – 模拟器和设备上的不同纹理行为
- 真正的MVC