Реализуйте некоторые вставки в HTMLLabel, но "drawTextinRect" никогда не вызывается

Я использую HTMLLabel ( https://github.com/nicklockwood/HTMLLabel), и я хотел бы реализовать некоторые вставки. Итак, я написал в файле HTMLLabel.m:

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

Но метод никогда не вызывается, есть идеи, почему? Спасибо за вашу помощь!

1 ответ

Решение

Я предполагаю, что это потому, что то, что делает этот класс, незаконно. Например, это переопределяет drawRect:, что вам не разрешено делать для UILabel. Более того, он делает это без вызова super, Так что это мешало нормальной работе базовой UILabel, и поэтому вы не можете получить доступ к этой нормальной работе.

Глядя на это в более позитивном свете: HTMLLabel не является ярлыком. Он выглядит как UILabel, в том смысле, что все это упаковано и доступно через UILabel; но он не использует UILabel для рисования текста вообще; он использует вспомогательное представление, называемое HTMLLayout. Так что с точки зрения UILabel, на самом деле ничего не происходит. Он не советует вам рисовать текст, потому что он не рисует текст.

Другие вопросы по тегам