美文网首页
iOS7之后计算字符串高度

iOS7之后计算字符串高度

作者: 祥子_HelloWorld | 来源:发表于2019-08-06 01:17 被阅读0次

iOS7之前计算字符串长宽的方法是:

- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:
(NSLineBreakMode)lineBreakMode NS_DEPRECATED_IOS(2_0, 7_0, "Use -
boundingRectWithSize:options:attributes:context:") __TVOS_PROHIBITED; // NSTextAlignment is 
not needed to determine size

不过在iOS7之后就过时了,有新的方法替换它。
下面是把iOS7的新方法封装成UILabel的类目以方便实用:

头文件:

//
//  NSString+FrameSize.h
//  Xcode7Test
//
//  Created by 于建祥 on 16/9/13.
//  Copyright © 2016年 于建祥. All rights reserved.
//
 
#import <UIKit/UIKit.h>
 
@interface NSString (FrameSize)
 
- (CGSize)boundingRectWithSize:(CGSize)size andFont:(UIFont *)font;
 
@end

实现文件:

//
//  NSString+FrameSize.m
//  Xcode7Test
//
//  Created by 于建祥 on 16/9/13.
//  Copyright © 2016年 于建祥. All rights reserved.
//
 
#import "NSString+FrameSize.h"
 
@implementation NSString (FrameSize)
 
- (CGSize)boundingRectWithSize:(CGSize)size andFont:(UIFont *)font
{
    NSDictionary *attribute = @{NSFontAttributeName:font};
    
    CGSize retSize = [self boundingRectWithSize:size
                                             options:\
                      NSStringDrawingTruncatesLastVisibleLine |
                      NSStringDrawingUsesLineFragmentOrigin |
                      NSStringDrawingUsesFontLeading
                                          attributes:attribute
                                             context:nil].size;
    
    return retSize;
}
 
@end

使用时:

    CGSize strSize = [str boundingRectWithSize:CGSizeMake(200, NSIntegerMax) andFont:[UIFont systemFontOfSize:14]];

    label.frame = CGRectMake(10, 20, strSize.width , strSize.height);

相关文章

网友评论

      本文标题:iOS7之后计算字符串高度

      本文链接:https://www.haomeiwen.com/subject/zckvdctx.html