zl程序教程

您现在的位置是:首页 >  大数据

当前栏目

计算一行文本的高度

计算 文本 高度 一行
2023-09-14 08:57:30 时间

计算一行文本的高度

 

说明

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

 

源码

//

// 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 strings height with the fixed width.

 * @param attribute Strings attribute, eg. attribute = @{NSFontAttributeName: [UIFont systemFontOfSize:18.f]}

 * @param width Fixed width.

 * @return Strings height.

- (CGFloat)heightWithStringAttribute:(NSDictionary NSString *, id *)attribute fixedWidth:(CGFloat)width;

 * Get the strings width.

 * @param attribute Strings attribute, eg. attribute = @{NSFontAttributeName: [UIFont systemFontOfSize:18.f]}

 * @return Strings width.

- (CGFloat)widthWithStringAttribute:(NSDictionary NSString *, id *)attribute;

 * Get a line of text height.

 * @param attribute Strings attribute, eg. attribute = @{NSFontAttributeName: [UIFont systemFontOfSize:18.f]}

 * @return Strings 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

细节