zoukankan      html  css  js  c++  java
  • IOS 计算文字尺寸(UILabel)

     方式1 :普通用法

    
    

    #define  MJNameFont [UIFont systemFontOfSize:14]


    /*
    * * 计算文字尺寸 * * @param text 需要计算尺寸的文字 * @param font 文字的字体 * @param maxSize 文字的最大尺寸 */ - (CGSize)sizeWithText:(NSString *)text font:(UIFont *)font maxSize:(CGSize)maxSize { NSDictionary *attrs = @{NSFontAttributeName : font};
       // 字体占用屏幕的宽度和高度
    return [text boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:attrs context:nil].size; }

    调用方法 1.

       // 文字的字体
        CGSize nameSize = [self sizeWithText:self.status.name font:MJNameFont maxSize:CGSizeMake(MAXFLOAT, MAXFLOAT)];
    
    CGFloat nameX
    = CGRectGetMaxX(self.iconView.frame) + padding; CGFloat nameY = iconY + (iconH - nameSize.height) * 0.5; self.nameView.frame = CGRectMake(nameX, nameY, nameSize.width, nameSize.height);

    方式 2.

    创建一个扩展NSString类


    #import
    "NSString+Extension.h" @implementation NSString (Extension)

    /**

     *  返回字符串所占用的尺寸

     *

     *  @param font    字体

     *  @param maxSize 最大尺寸

     */

    - (CGSize)sizeWithFont:(UIFont *)font maxSize:(CGSize)maxSize
    {
        NSDictionary *attrs = @{NSFontAttributeName : font};
        //    return [self boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:attrs context:nil].size;
        
        return [self boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:attrs context:nil].size;
    }
    @end

    调用

        //文字计算的最大尺寸
        CGSize textMaxSize=CGSizeMake(150, MAXFLOAT);
        //文字计算出来的真实尺寸(按钮内部label的尺寸)
        CGSize textRealSize=[message.text sizeWithFont:MJTextFont maxSize:textMaxSize];
        
    //    CGSize textSize=[self sizeWithText:message.text font:MJTextFont maxSize:textMaxSize];
    
        // 按钮最终的真实尺寸
        CGSize textBtnSize = CGSizeMake(textRealSize.width + MJTextPadding * 2, textRealSize.height + MJTextPadding * 2);
  • 相关阅读:
    为什么在SqlServer流水模式下,事务无法启动?
    默认web站点被删除,如何设置新的默认站点?
    用C#实现基于TCP协议的网络通讯
    如何通过DataRelation关联两个DataGrid,实现主从表。
    如何设置网站的会话时间?
    性能测试基本概念释疑
    C#中如何获取服务器IP,名称,操作系统,客户端IP,名称!
    DataGridComboBoxColumn控件
    端口基础知识
    P2P之UDP穿透NAT的原理与实现
  • 原文地址:https://www.cnblogs.com/liuwj/p/6475239.html
Copyright © 2011-2022 走看看