UILabel的TextContainer中的排除路径

9

是否可以在UILabel上设置排除路径?苹果文档说明UILabel现在是建立在TextKit之上的,但是UILabel似乎没有暴露textContainer属性。

我想要实现一个包含多个标签和roux徽章的表格视图单元格,这些标签不应该重叠(如下所示)。

enter image description here

如果UILabel无法实现,我该如何让TextView像UILabel一样运作(无滚动、选择等),并将其大小调整为适合其内容?

1个回答

8
UILabel确实没有暴露TextKit堆栈,因此您无法设置排除路径。
但是,您并不真正需要UILabel;使用TextKit直接绘制到矩形图形上下文中很容易,并且现在您可以设置排除路径(因为您正在使用TextKit进行绘制)。要使用TextKit进行绘制,只需构建文本工具“堆栈”,按任何您喜欢的方式进行自定义,然后在绘制时调用布局管理器的drawBackgroundForGlyphRange:...drawGlyphsForGlyphRange:...

这里有一个例子,我直接在图形上下文中绘制(在UIView子类的drawRect:中使用TextKit:https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch10p543drawingWithTextKit/ch23p815attributedStringDrawing3/StyledText.m)。 - matt
如果我选择这种方法,那么在HeightForRow中是否需要手动计算单元格的高度?目前我使用systemLayoutSizeFittingSize:UILayoutFittingCompressedSize,类似于这个链接中的方法http://blog.jldagon.me/blog/2013/12/07/auto-layout-and-uitableview-cells/。 - bencallis
是的,布局管理器也会告诉您高度。它可以做任何事情! - matt
2
@matt,你的示例是404错误 :( - Nathaniel
1
@Nathaniel https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch10p543drawingWithTextKit/ch23p815attributedStringDrawing3/StyledText.swift 似乎是一个更新的版本。 - aranasaurus
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接