如何从属性HTML字符串设置uitextview大小?

时间:2016-05-10 12:30:52

标签: ios uiview uitextview nsattributedstring

我正在开发和应用就像新闻喂养一样。一些单元格视图我必须将NSAttributedString设置为textview并获得textview的确切高度。

在我的NSAttributedString中有HTML内容。我必须在textview中设置,因为它在Web视图中占用了太多时间。

问题在于,有些时候我得到了textview的完美高度,有些时候我没有达到textview的高度。由于NSAttributedString有一段时间它会考虑字体高度,有些时候它不会考虑字体高度。

如果你看到我的代码,我可以更多地了解我所做的事情。 templbl2UITextview temptext2UIView

这是我的代码:

 - (void)viewDidLoad
{
    [super viewDidLoad];
 NSString *str3 = [NSString stringWithFormat:@"<span style=\"font-family: Frank-regular; font-size: 13\">%@</span>", strTerms];
            NSAttributedString * attrStr2 = [[NSAttributedString alloc] initWithData:[str3 dataUsingEncoding:NSUTF8StringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSFontAttributeName : [UIFont fontWithName:@"Frank-regular" size:13.0]} documentAttributes:nil error:nil];
            templbl2.attributedText = attrStr2;
            [templbl2 sizeToFit];
            [self textViewHeightForAttributedText:attrStr2];
}
- (CGFloat)textViewHeightForAttributedText:(NSAttributedString *)text
{
    CGFloat width = [UIScreen mainScreen].bounds.size.width; // whatever your desired width is
    CGRect paragraphRect =
    [text boundingRectWithSize:CGSizeMake(300.f, CGFLOAT_MAX)
                       options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading)
                       context:nil];
        temptext2.frame = CGRectMake(0, 0, width, paragraphRect.size.height+60);
    return paragraphRect.size.height;
}

1 个答案:

答案 0 :(得分:0)

尝试以下方法:

- (CGFloat)textViewHeightForAttributedText:(NSAttributedString *)text
        {

            CGFloat width = [UIScreen mainScreen].bounds.size.width; // whatever your desired width is

            UITextView *txtView;
            txtView.attributedText = attrStr2;

            CGSize size = [tvDummyForHeightTemp sizeThatFits:CGSizeMake(width, FLT_MAX)];



            temptext2.frame = CGRectMake(0, 0, width, size.height+60);

            return size.height;
        }

希望这会有所帮助:)