zoukankan      html  css  js  c++  java
  • 根据字符内容计算宽高度

    根据内容计算宽度

    - (CGFloat)calculateRowWidth:(NSString *)string {  
        NSDictionary *dic = @{NSFontAttributeName:[UIFont systemFontOfSize:17]};  //指定字号  
        CGRect rect = [string boundingRectWithSize:CGSizeMake(0, 30)/*计算宽度时要确定高度*/ options:NSStringDrawingUsesLineFragmentOrigin |  
                       NSStringDrawingUsesFontLeading attributes:dic context:nil];  
        return rect.size.width;  
    }

    根据内容计算高度

    - (CGFloat)calculateRowHeight:(NSString *)string fontSize:(NSInteger)fontSize{  
        NSDictionary *dic = @{NSFontAttributeName:[UIFont systemFontOfSize:fontSize]};//指定字号  
        CGRect rect = [string boundingRectWithSize:CGSizeMake(self.view.width - 30, 0)/*计算高度要先指定宽度*/ options:NSStringDrawingUsesLineFragmentOrigin |  
                       NSStringDrawingUsesFontLeading attributes:dic context:nil];  
        return rect.size.height;  
    }

     二、如果两行或者多行 字符串的时候 设置行间隔  在动态计算高度 如下两段代码

    - (CGFloat)calculateRowHeight:(NSString *)string fontSize:(NSInteger)fontSize strWithWidthX:(CGFloat)widthX
    {
        NSDictionary *dic = [self setParameterWithfloat:5 fontSize:fontSize];
        // 计算高度要先指定宽度
        CGRect rect = [string boundingRectWithSize:CGSizeMake(kUIScreenWidth - widthX, 0) options:NSStringDrawingUsesLineFragmentOrigin |
                       NSStringDrawingUsesFontLeading attributes:dic context:nil];
        return rect.size.height;
    }
    
    //设置行间距
    - (NSDictionary *)setParameterWithfloat:(CGFloat )heightForLineSpacing fontSize:(NSInteger)fontSize
    {
        NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStyle alloc] init];
        paraStyle.lineBreakMode = NSLineBreakByCharWrapping;
        paraStyle.alignment = NSTextAlignmentLeft;
        // 设置行间距
        paraStyle.lineSpacing = heightForLineSpacing;
        // 指定字号
        NSDictionary *dic = @{NSFontAttributeName:[UIFont systemFontOfSize:fontSize], NSParagraphStyleAttributeName:paraStyle};
        return dic;
    }
  • 相关阅读:
    洛谷【P1480】A/B Problem
    bzoj 2654 && bzoj 3675 总结
    关于三维莫队问题的一些思考和探究
    BZOJ 1179 抢掠计划atm (缩点+有向无环图DP)
    BZOJ 1500 Luogu P2042 [NOI2005] 维护数列 (Splay)
    Codeforces 919D Substring (拓扑图DP)
    【学习笔记】有向无环图上的DP
    【学习笔记】求解简单递归式的一般方法
    BZOJ 3930 Luogu P3172 选数 (莫比乌斯反演)
    POJ 1061 BZOJ 1477 Luogu P1516 青蛙的约会 (扩展欧几里得算法)
  • 原文地址:https://www.cnblogs.com/dujiahong/p/6708721.html
Copyright © 2011-2022 走看看