zoukankan      html  css  js  c++  java
  • 计算一行文本的高度

    计算一行文本的高度

    说明

    有时候我们需要知道指定的几行文本的高度,此工具用于解决此种问题。

    源码

    //
    //  NSString+LabelWidthAndHeight.h
    //  ZiPeiYi
    //
    //  Created by YouXianMing on 15/12/9.
    //  Copyright © 2015年 YouXianMing. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    #import <UIKit/UIKit.h>
    
    @interface NSString (LabelWidthAndHeight)
    
    /**
     *  Get the string's height with the fixed width.
     *
     *  @param attribute String's attribute, eg. attribute = @{NSFontAttributeName: [UIFont systemFontOfSize:18.f]}
     *  @param width     Fixed width.
     *
     *  @return String's height.
     */
    - (CGFloat)heightWithStringAttribute:(NSDictionary <NSString *, id> *)attribute fixedWidth:(CGFloat)width;
    
    /**
     *  Get the string's width.
     *
     *  @param attribute String's attribute, eg. attribute = @{NSFontAttributeName: [UIFont systemFontOfSize:18.f]}
     *
     *  @return String's width.
     */
    - (CGFloat)widthWithStringAttribute:(NSDictionary <NSString *, id> *)attribute;
    
    /**
     *  Get a line of text height.
     *
     *  @param attribute String's attribute, eg. attribute = @{NSFontAttributeName: [UIFont systemFontOfSize:18.f]}
     *
     *  @return String's width.
     */
    + (CGFloat)aLineOfTextHeightWithStringAttribute:(NSDictionary <NSString *, id> *)attribute;
    
    @end
    //
    //  NSString+LabelWidthAndHeight.m
    //  ZiPeiYi
    //
    //  Created by YouXianMing on 15/12/9.
    //  Copyright © 2015年 YouXianMing. All rights reserved.
    //
    
    #import "NSString+LabelWidthAndHeight.h"
    
    @implementation NSString (LabelWidthAndHeight)
    
    - (CGFloat)heightWithStringAttribute:(NSDictionary <NSString *, id> *)attribute fixedWidth:(CGFloat)width {
        
        NSParameterAssert(attribute);
        
        CGFloat height = 0;
        
        if (self.length) {
            
            CGRect rect = [self boundingRectWithSize:CGSizeMake(width, MAXFLOAT)
                                             options:NSStringDrawingTruncatesLastVisibleLine |NSStringDrawingUsesLineFragmentOrigin |
                           NSStringDrawingUsesFontLeading
                                          attributes:attribute
                                             context:nil];
            
            height = rect.size.height;
        }
        
        return height;
    }
    
    - (CGFloat)widthWithStringAttribute:(NSDictionary <NSString *, id> *)attribute {
        
        NSParameterAssert(attribute);
        
        CGFloat width = 0;
        
        if (self.length) {
            
            CGRect rect = [self boundingRectWithSize:CGSizeMake(MAXFLOAT, 0)
                                             options:NSStringDrawingTruncatesLastVisibleLine |NSStringDrawingUsesLineFragmentOrigin |
                           NSStringDrawingUsesFontLeading
                                          attributes:attribute
                                             context:nil];
            
            width = rect.size.width;
        }
        
        return width;
    }
    
    + (CGFloat)aLineOfTextHeightWithStringAttribute:(NSDictionary <NSString *, id> *)attribute {
        
        CGFloat height = 0;
        CGRect rect    = [@"One" boundingRectWithSize:CGSizeMake(200, MAXFLOAT)
                                              options:NSStringDrawingTruncatesLastVisibleLine |NSStringDrawingUsesLineFragmentOrigin |
                          NSStringDrawingUsesFontLeading
                                           attributes:attribute
                                              context:nil];
        
        height = rect.size.height;
        return height;
    }
    
    @end

    细节

  • 相关阅读:
    还是模块
    模块
    Django之中间件和Auth模块
    Django之form表单组件、cookie与session
    ORM表查询之F查询和Q查询以及事务
    django之单表和多表查询
    django之模板层
    Django之路由
    Django之前戏
    前端之Bootstrap框架
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/5370586.html
Copyright © 2011-2022 走看看