• 获取字符串的宽度和高度


     1 //1.获取字符串的宽度
     2 -(float) widthForString:(NSString *)value fontSize:(float)fontSize andHeight:(float)height
     3 {
     4     CGSize sizeToFit = [value sizeWithFont:[UIFont systemFontOfSize:fontSize] constrainedToSize:CGSizeMake(CGFLOAT_MAX, height) lineBreakMode:NSLineBreakByWordWrapping];//此处的换行类型(lineBreakMode)可根据自己的实际情况进行设置
     5     return sizeToFit.width;
     6 }
     7 
     8 
     9 //2.获得字符串的高度
    10 -(float) heightForString:(NSString *)value fontSize:(float)fontSize andWidth:(float)width
    11 {
    12     //之前的写法
    13     
    14     CGSize sizeToFit = [value sizeWithFont:[UIFont systemFontOfSize:fontSize] constrainedToSize:CGSizeMake(width, CGFLOAT_MAX) lineBreakMode:NSLineBreakByCharWrapping];//此处的换行类型(lineBreakMode)可根据自己的实际情况进行设置
    15     
    16      /*
    17     //现在的写法
    18 
    19     NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
    20     [style setLineBreakMode:NSLineBreakByCharWrapping];
    21     
    22     NSDictionary *attributes = @{ NSFontAttributeName : [UIFont systemFontOfSize:10], NSParagraphStyleAttributeName : style};
    23     
    24     [value boundingRectWithSize:CGSizeMake(width, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil];
    25      
    26      */
    27      
    28     return sizeToFit.height;
    29     
    30   
    31 }

     存在不足的地方:

    boundingRectWithSize: 方法只是取得字符串的size, 如果字符串中包含 这样的字符,也只会把它当成字符来计算。但放到UITextView中来解析时,会把它变成回车换行符,那么在显示时就会多出一行的高度出来。

    而且,使用stringWithFormat才会忽略 ,使用@“”形式不会。

    矬点的做法,大体的实际高度 = boundingRectWithSize计算出来的高度 + 出现的次数 * 单行文本的高度

  • 相关阅读:
    libuv 中文编程指南(一)序言
    一些鲜为人知却非常实用的数据结构
    libuv 中文编程指南(二)libuv 基础
    Zookeeper 的 Lua 绑定(二)
    高度怀疑
    不能没有你
    第一次看流星雨记
    调侃下蓝网队 我还是比较极端的 不要好 那就要坏吧
    摇滚校园
    守法公民
  • 原文地址:https://www.cnblogs.com/pengsi/p/5340413.html
Copyright © 2020-2023  润新知