在HTMLLabel中实现一些插入,但从不调用“drawTextinRect”

时间:2015-05-10 16:14:23

标签: ios objective-c uilabel uiedgeinsets

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

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

但是方法永远不会被调用,任何想法为什么?谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

我的猜测是因为这个班级正在做的事情是非法的。例如,它会覆盖drawRect:,您不允许对UILabel执行此操作。而且,它在不调用super的情况下执行此操作。因此它干扰了底层UILabel的正常工作,因此您无法访问这些正常工作。

从更积极的角度来看:HTMLLabel不是标签。它构成了一个UILabel,从某种意义上讲,它全部被包裹起来并通过UILabel进入;但它并没有使用UILabel来绘制文本;它使用一个名为HTMLLayout的帮助器视图。因此,从潜在的UILabel的观点来看,实际上并没有发生任何事情。它没有向您咨询有关绘制文本的信息,因为它没有绘制任何文本。