动态调整UILabel的高度或宽度
使用示例:(下面的例子就返回了一个系统默认字体,大小为18,保持宽为300,动态调整高度的CGSize)
NSString *testStr = @"动态调整UILabel的高度或宽度";
CGSize result = [testStr sizeWithFont:[UIFont systemFontOfSize:18] maxSize:CGSizeMake(300, MAXFLOAT)];
可以写一个NSString的类目(Category)
.h中声明一个方法,写出需要提供的参数,即字体以及字体的大小,还有最大的尺寸(宽最大或高最大)
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface NSString (Size)
/**返回字符串所占用的尺寸*/
- (CGSize)sizeWithFont:(UIFont *)font maxSize:(CGSize)size;
@end
.m中的具体实现.h中声明的方法。返回值是CGSize
#import "NSString+Size.h"
@implementation NSString (Size)
- (CGSize)sizeWithFont:(UIFont *)font maxSize:(CGSize)maxSize {
NSDictionary *attributes = @{NSFontAttributeName:font};
return [self boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil].size;
}
@end