iOS开发之自定义段落时求文字高度
//
// NSString+Extend.h
// FoodWorld
//
// Created by lys on 16/2/11.
// Copyright © 2016年 imac. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface NSString (Extend)
/**
* 求单行字的宽度
*/
- (CGFloat)getTextWightWithFont:(UIFont *)font;
/**
* 求单行字的Size
*/
- (CGSize)getTextSizeWithFont:(UIFont *)font;
/**
* 求多行字在指定宽度下的高度
*/
- (CGFloat)getTextHeightWithFont:(UIFont *)font withWidth:(CGFloat)width;
/**
* 求多行字在指定宽度下的高度 可以自定义段落
*/
- (CGFloat)getTextHeightWithFont:(UIFont *)font withWidth:(CGFloat)width withParagraphStyle:(NSParagraphStyle *)paragraphStyle;
@end
//
// NSString+Extend.m
// FoodWorld
//
// Created by lys on 16/2/11.
// Copyright © 2016年 imac. All rights reserved.
//
#import "NSString+Extend.h"
@implementation NSString (Extend)
/**
* 求单行字的宽度
*/
- (CGFloat)getTextWightWithFont:(UIFont *)font {
CGRect rect = [self boundingRectWithSize:CGSizeMake(1000, 1000) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:font} context:nil];
return rect.size.width;
}
/**
* 求单行字的Size
*/
- (CGSize)getTextSizeWithFont:(UIFont *)font {
CGRect rect = [self boundingRectWithSize:CGSizeMake(1000, 1000) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:font} context:nil];
return rect.size;
}
/**
* 求多行字在指定宽度下的高度
*/
- (CGFloat)getTextHeightWithFont:(UIFont *)font withWidth:(CGFloat)width {
// CGRect rect = [self boundingRectWithSize:CGSizeMake(width, 10000) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:font} context:nil];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]init];
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
NSDictionary *attributes = @{NSFontAttributeName:font,
NSParagraphStyleAttributeName:paragraphStyle.copy};
CGRect rect = [self boundingRectWithSize:CGSizeMake(width, 10000) options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil];
/*
This method returns fractional sizes (in the size component of the returned CGRect); to use a returned size to size views, you must use raise its value to the nearest higher integer using the ceil function.
*/
return rect.size.height;
}
/**
* 求多行字在指定宽度下的高度 可以自定义段落
*/
- (CGFloat)getTextHeightWithFont:(UIFont *)font withWidth:(CGFloat)width withParagraphStyle:(NSParagraphStyle *)paragraphStyle{
if (paragraphStyle == nil) {
NSMutableParagraphStyle *tparagraphStyle = [[NSMutableParagraphStyle alloc]init];
tparagraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
paragraphStyle = tparagraphStyle;
}
NSDictionary *attributes = @{NSFontAttributeName:font,
NSParagraphStyleAttributeName:paragraphStyle.copy};
CGRect rect = [self boundingRectWithSize:CGSizeMake(width, 10000) options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil];
return rect.size.height;
}
浙公网安备 33010602011771号