12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- //
- // NSString+hAdd.m
- // MultilevelMenu
- //
- // Created by Kingson on 2020/12/4.
- //
- #import "NSString+hAdd.h"
- @implementation NSString (hAdd)
- - (CGFloat)heightForFont:(UIFont *)font width:(CGFloat)width {
- CGSize size = [self sizeForFont:font size:CGSizeMake(width, MAXFLOAT) mode:NSLineBreakByWordWrapping];
- return size.height;
- }
- - (CGSize)sizeForFont:(UIFont *)font size:(CGSize)size mode:(NSLineBreakMode)lineBreakMode {
- CGSize result;
- if (!font) font = [UIFont systemFontOfSize:12];
- if ([self respondsToSelector:@selector(boundingRectWithSize:options:attributes:context:)]) {
- NSMutableDictionary *attr = [NSMutableDictionary new];
- attr[NSFontAttributeName] = font;
- if (lineBreakMode != NSLineBreakByWordWrapping) {
- NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new];
- paragraphStyle.lineBreakMode = lineBreakMode;
- attr[NSParagraphStyleAttributeName] = paragraphStyle;
- }
- CGRect rect = [self boundingRectWithSize:size
- options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading
- attributes:attr context:nil];
- result = rect.size;
- } else {
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- result = [self sizeWithFont:font constrainedToSize:size lineBreakMode:lineBreakMode];
- #pragma clang diagnostic pop
- }
- return result;
- }
- @end
|