【问题标题】:Set UILabel which displays HTML inside UIScrollView设置在 UIScrollView 中显示 HTML 的 UILabel
【发布时间】:2015-10-07 20:28:43
【问题描述】:

我正在尝试在 UILabel 中显示较长的 HMTL 内容,并且我希望它适合正确的宽度(如响应式 HTML)。

在 Android 中它可以正确地自动调整,我现在正在 iOS 中这样做。

我所做的是一个UIScrollView,里面有一个UILabel,叫做htmlLabelUILabel 贴在顶部,左侧和右侧,我从UIScrollView 底部留出空间:

这是我的代码:

//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;

但我只能得到第一行:

我做错了什么??

提前谢谢你。

问候。

拉斐尔。

【问题讨论】:

    标签: ios uiscrollview uilabel


    【解决方案1】:

    您需要确定标签在指定宽度下所需的文本高度。例如:

      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;
    

    【讨论】:

      猜你喜欢
      • 2013-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多