zoukankan      html  css  js  c++  java
  • 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.

     

     

  • 相关阅读:
    Unity基础:AR(增强现实)的学习
    Fire Balls 04——平台组合,场景的美化
    Fire Balls 12——UI界面的制作
    Fire Balls 11——修正游戏的BUG
    Unity使用Rider作为IDE的体验
    Unity 5 使用Roslyn编译器支持C# 7
    MySQL 5.5主从复制(Replication)
    使用libcurl的正确姿势
    U盘安装Ubuntu Server 14.04
    arguments介绍(二)
  • 原文地址:https://www.cnblogs.com/willbin/p/3689305.html
Copyright © 2011-2022 走看看