• 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(10, 35, detailLabelWidth, detailHeight+3)];  // 加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.

     

     

  • 相关阅读:
    localStorage存储数组以及取数组方法
    jq选择CheckBox进行排序
    js定时函数,定时改变字体的大小
    JQuery Datatable用法
    WebSocket实战
    代码段
    黎活明给程序员的忠告 收藏
    雅砻江后勤项目经验总结
    Java泛型方法
    回忆,梦的开始
  • 原文地址:https://www.cnblogs.com/willbin/p/3689305.html
Copyright © 2020-2023  润新知