UITextView 动态高度计算(iOS7版)

时间:2023-03-09 16:25:55
UITextView 动态高度计算(iOS7版)
 NSDictionary *attrsDictionary = [NSDictionarydictionaryWithObject:[UIFontsystemFontOfSize:kCellContentFontSize]

                                                                forKey:NSFontAttributeName];

    NSAttributedString *attributedText = [[[NSAttributedString alloc] initWithString:_contentStr attributes:attrsDictionary] autorelease];

    NSInteger detailHeight = [BZDataDealer textViewHeightForAttributedText:attributedText

                                                                  andWidth:detailLabelWidth];

    UITextView *detailTextView = [[UITextView alloc] initWithFrame:CGRectMake(, , detailLabelWidth, detailHeight+)];  // 加3个像素

    detailTextView.scrollEnabled = NO;  // 是否允许滚动会影响高度的展示

    detailTextView.text = _contentStr;

    [containerView addSubview:detailTextView];
+ (NSInteger)textViewHeightForAttributedText:(NSAttributedString *)text andWidth:(CGFloat)width
{
UITextView *textView = [[UITextView alloc] init];
[textView setAttributedText:text];
CGSize size = [textView sizeThatFits:CGSizeMake(width, FLT_MAX)];
return (NSInteger)(size.height);
}

以前的方法用 先赋值, 再取textview的contentsize.height, iOS7后, 这个不能和了.

苹果目前很多情况下都是推荐使用 NSAttributedString 来计算一些数据.

ps: 如果

detailTextView.scrollEnabled = NO;  // 是否允许滚动会影响高度的展示

不允许滚动, 计算出的高度还是会少一点. 所以上面加了3个像素.

不知道是不是苹果你妹的bug.