zoukankan      html  css  js  c++  java
  • 获取字符串的宽度和高度

     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计算出来的高度 + 出现的次数 * 单行文本的高度

  • 相关阅读:
    P1474 货币系统 Money Systems(完全背包求填充方案数)
    Codeforces 877C Slava and tanks(思维)
    883H
    Codeforces 873B
    POJ 1733 Parity game(带权并查集)
    POJ 2387 Til the Cows Come Home(dijkstra裸题)
    POJ 1984 Navigation Nightmare(二维带权并查集)
    POJ 2912 Rochambeau(种类并查集+枚举)
    POJ 1456 Supermarket(贪心+并查集)
    POJ 2492 A Bug's Life(带权并查集)
  • 原文地址:https://www.cnblogs.com/pengsi/p/5340413.html
Copyright © 2011-2022 走看看