zoukankan      html  css  js  c++  java
  • iOS文本高度计算

    文本高度计算:此方法适用于根据不同的文字长短,设置与文字相同的size

    //****************************************************************************************************************//

    //***************************************************************************************************************//

    //*********************************************计算文本高度 ********************************************************//

    //***************************************************************************************************************//

    //**********************************************************************笨笨编程 **********************************//

    //***************************************************************************************************************//

    /**

    *  param: string:需要计算的文本text

    *  param: font :文本显示的字体大小

    *  param: maxSize:文本显示的范围

    *  return: 文本占用的真实宽高

    */

    - (CGSize)sizeWithString:(NSString *)string font:(UIFont *)font maxSize:(CGSize)maxSize{

        NSDictionary *dict = @{NSFontAttributeName : font};

        CGSize size = [string boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:dict context:nil].size;

        return size;

    }

    //****************************************************************************************************************//

    - (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context NS_AVAILABLE_IOS(7_0);

    //size: 用于计算文本绘制时占据的矩形块。日常使用经常是宽度设置为一个固定值,然后高度为CGFLOAT_MAX(无限大的一个数值)
    //options:文本绘制时附加选项,可以附加使用。
    这里是官方API文档

    typedef NS_OPTIONS(NSInteger, NSStringDrawingOptions) {

        NSStringDrawingTruncatesLastVisibleLine = 1 << 5, // 如果文本内容超出指定的矩形限制,文本将被截去并在最后一个字符后加上省略号。(Truncates and adds the ellipsis character to the last visible line if the text doesn't fit into the bounds specified. Ignored if NSStringDrawingUsesLineFragmentOrigin is not also set.)

        NSStringDrawingUsesLineFragmentOrigin = 1 << 0, // 该选项被忽略(The specified origin is the line fragment origin, not the base line origin)

        NSStringDrawingUsesFontLeading = 1 << 1, // 计算行高时使用行间距,字体大小+行间距 = 行高(Uses the font leading for calculating line heights)

        NSStringDrawingUsesDeviceMetrics = 1 << 3, //使用图片上的文字大小代替印刷上的文字大小(Uses image glyph bounds instead of typographic bounds)

    } NS_ENUM_AVAILABLE_IOS(6_0);

    //attributes:文字的属性。必须设置字体的大小,注意这时是字典下的UIFont类型的。
    //comtext:    context上下文,常设为nil。 

    //******************************************参见iOS开发章鱼哥*********************************************************//

     //**************************************http://www.jianshu.com/p/155f9065f6d1****************************************//

     

  • 相关阅读:
    for、foreach、stream 哪家的效率更高,你真的用对了吗?
    SQL中那么多函数,Java8为什么还要提供重复的Stream方法,多此一举?
    Java中对象池的本质是什么?(实战分析版)
    引入 Gateway 网关,这些坑一定要学会避开!!!
    Java8 Stream流式编程,极大解放你的生产力!
    backup.bat
    robocopy用法详解
    【转】MYSQL中的COLLATE是什么?
    Java实现自定义监控系统,秀不秀?
    IDEA激活码2021永久,全网唯一靠谱的免费激活IDEA的方式!!!
  • 原文地址:https://www.cnblogs.com/chenjie-ios/p/4662027.html
Copyright © 2011-2022 走看看