在 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 的角度来看,实际上什么都没有发生。它不会就绘制文本咨询您,因为它不会绘制任何文本。