0

我正在使用 HTMLLabel ( https://github.com/nicklockwood/HTMLLabel ),我想实现一些插图。所以我在 HTMLLabel.m 文件中写道:

- (void)drawTextInRect:(CGRect)rect
 {
    UIEdgeInsets insets = {0, 5, 0, 5};
    [super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)];
}

但是该方法永远不会被调用,有什么想法吗?谢谢你的帮助!

4

1 回答 1

1

我的猜测是,这是因为这个类的行为是非法的。例如,它会覆盖drawRect:,您不能为 UILabel 执行此操作。此外,它无需调用super. 因此它干扰了底层 UILabel 的正常工作,因此您无法访问这些正常工作。

从更积极的角度来看:HTMLLabel 不是标签。它伪装成一个 UILabel,从某种意义上说,它全部被包裹起来并通过 UILabel 访问;但它根本不使用 UILabel 来绘制文本;它使用一个称为 HTMLLayout 的辅助视图。因此,从底层 UILabel 的角度来看,实际上并没有发生任何事情。它不会就绘制文本咨询您,因为它绘制任何文本。

于 2015-05-10T16:35:43.703 回答