2015-10-07 2 views
0

Я пытаюсь отобразить длинный контент HMTL в UILabel, и я хочу, чтобы он соответствовал правильной ширине (например, отзывчивому HTML).Установить UILabel, который отображает HTML внутри UIScrollView

В Android он автоматически настраивается, и я делаю это в iOS прямо сейчас.

То, что я сделал, это UIScrollView с этим UILabel внутри под названием htmlLabel. UILabel приклеивается к верхней части, слева и справа, и я позволяю нижнее пространство от UIScrollView:

enter image description here

и это мой код:

//html 
[self.myScrollView setContentSize:CGSizeMake(self.view.frame.size.width, 20000)]; 
NSString * htmlString = item[@"content"]; 

NSAttributedString * attrStr = [[NSAttributedString alloc] initWithData:[htmlString dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil]; 

_htmlLabel.attributedText = attrStr; 

, но я могу получить только первая строка:

enter image description here

что я делаю не так ??

Заранее спасибо.

С уважением.

Rafael.

ответ

0

Вам необходимо определить высоту текста, который будет нужен вашей метке по указанной ширине. Например:

CGFloat width = _htmlLabel.frame.size.width; 
    CGRect rec = [htmlString boundingRectWithSize:CGSizeMake(width, MAXFLOAT) 
              options:NSStringDrawingUsesLineFragmentOrigin 
             attributes:@{label.font} 
              context:nil]; 

Установите высоту _htmlLabel на:

rec.size.height; 

Вам также потребуется установить лейбла «UILineBreakMode», чтобы слово оберткой и установите метку многострочный:

_htmlLabel.numberOfLines = 0; 
_htmlLabel.lineBreakMode = NSLineBreakByWordWrapping; 
Смежные вопросы