在 HTMLLabel 中实现一些插入,但从未调用 "drawTextinRect"
Implement some insets in HTMLLabel but "drawTextinRect" get never called
我正在使用 HTMLLabel (https://github.com/nicklockwood/HTMLLabel),我想实现一些插图。所以我在 HTMLLabel.m 文件中写道:
- (void)drawTextInRect:(CGRect)rect
{
UIEdgeInsets insets = {0, 5, 0, 5};
[super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)];
}
但是该方法从未被调用,知道为什么吗?感谢您的帮助!
我猜这是因为 class 所做的是非法的。例如,它会覆盖 drawRect:
,这是不允许您对 UILabel 执行的操作。此外,它在不调用 super
的情况下执行此操作。因此它干扰了底层 UILabel 的正常工作,因此您无法访问这些正常工作。
从更积极的角度来看:HTMLLabel 不是标签。它伪装成一个 UILabel,因为它全部被包装起来并通过 UILabel 访问;但它根本不使用 UILabel 来绘制文本;它使用一个称为 HTMLLayout 的辅助视图。所以从底层 UILabel 的角度来看,实际上什么都没有发生。它不会就绘制文本咨询您,因为它不会绘制任何文本。
我正在使用 HTMLLabel (https://github.com/nicklockwood/HTMLLabel),我想实现一些插图。所以我在 HTMLLabel.m 文件中写道:
- (void)drawTextInRect:(CGRect)rect
{
UIEdgeInsets insets = {0, 5, 0, 5};
[super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)];
}
但是该方法从未被调用,知道为什么吗?感谢您的帮助!
我猜这是因为 class 所做的是非法的。例如,它会覆盖 drawRect:
,这是不允许您对 UILabel 执行的操作。此外,它在不调用 super
的情况下执行此操作。因此它干扰了底层 UILabel 的正常工作,因此您无法访问这些正常工作。
从更积极的角度来看:HTMLLabel 不是标签。它伪装成一个 UILabel,因为它全部被包装起来并通过 UILabel 访问;但它根本不使用 UILabel 来绘制文本;它使用一个称为 HTMLLayout 的辅助视图。所以从底层 UILabel 的角度来看,实际上什么都没有发生。它不会就绘制文本咨询您,因为它不会绘制任何文本。