zoukankan      html  css  js  c++  java
  • iOS依据字符串计算UITextView高度

    iOS计算字符串高度,有须要的朋友能够參考下。


    方法一:ios7.0之前适用

    /**
     @method 获取指定宽度width,字体大小fontSize,字符串value的高度
     @param value 待计算的字符串
     @param fontSize 字体的大小
     @param Width 限制字符串显示区域的宽度
     @result float 返回的高度
     */
    - (float) heightForString:(NSString *)value fontSize:(float)fontSize andWidth:(float)width
    {
        CGSize sizeToFit = [value sizeWithFont:[UIFont systemFontOfSize:fontSize]
                             constrainedToSize:CGSizeMake(width -16.0, CGFLOAT_MAX)
                                 lineBreakMode:NSLineBreakByWordWrapping];
            //此处的换行类型(lineBreakMode)可依据自己的实际情况进行设置
        return sizeToFit.height + 16.0;
    }

    方法二:ios7.0及之后适用

    /**
     @method 获取指定宽度width,字体大小fontSize,字符串value的高度
     @param value 待计算的字符串
     @param fontSize 字体的大小
     @param Width 限制字符串显示区域的宽度
     @result float 返回的高度
     */
    - (float) heightForString:(NSString *)value andWidth:(float)width{
        //获取当前文本的属性
        NSAttributedString *attrStr = [[NSAttributedString alloc] initWithString:value];
        _text.attributedText = attrStr;
        NSRange range = NSMakeRange(0, attrStr.length);
        // 获取该段attributedString的属性字典
        NSDictionary *dic = [attrStr attributesAtIndex:0 effectiveRange:&range];
        // 计算文本的大小
        CGSize sizeToFit = [value boundingRectWithSize:CGSizeMake(width - 16.0, MAXFLOAT) // 用于计算文本绘制时占领的矩形块
                                                   options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading // 文本绘制时的附加选项
                                                attributes:dic        // 文字的属性
                                                   context:nil].size; // context上下文。包括一些信息,比如怎样调整字间距以及缩放。

    该对象包括的信息将用于文本绘制。

    该參数可为nil return sizeToFit.height + 16.0; }

    //注意:再前两种方法中,UITextView在上下左右分别有一个8pxpadding,须要将UITextView.contentSize.width减去16像素(左右的padding 2 x 8px)。同一时候返回的高度中再加上16像素(上下的padding)。这样得到的才是UITextView真正适应内容的高度。如代码中 CGSizeMake(width -16.0, CGFLOAT_MAX)return sizeToFit.height + 16.0

    UILable中则不用


    方法三:通用(推荐)

    /**
     @method 获取指定宽度width的字符串在UITextView上的高度
     @param textView 待计算的UITextView
     @param Width 限制字符串显示区域的宽度
     @result float 返回的高度
     */
    - (float) heightForString:(UITextView *)textView andWidth:(float)width{
         CGSize sizeToFit = [textView sizeThatFits:CGSizeMake(width, MAXFLOAT)];
        return sizeToFit.height;
    }
  • 相关阅读:
    安装lnmp 时如何修改数据库数据存储地址及默认访问地址
    ubuntu 设置root用户密码并实现root用户登录
    解决ubuntu 远程连接问题
    linux 搭建FTP服务器
    PHP 根据ip获取对应的实际地址
    如何发布自己的composer包
    使用composer安装composer包报Your requirements could not be resolved to an installable set of packages
    laravel 框架配置404等异常页面
    使用Xshell登录linux服务器报WARNING! The remote SSH server rejected X11 forwarding request
    IoTSharp 已支持国产松果时序数据库PinusDB
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5200580.html
Copyright © 2011-2022 走看看