在布局文本对象时(比如使用UILabel),经常需要根据文本内容来计算显示文本控件的大小(Frame/Bounds),以下例子代码展示了计算文本显示大小的基本过程:
// 需要首先确定显示文本的最大宽度maxWidth,一般设置为控件父容器的宽度 CGFloat maxWidth = self.bounds.size.width; // 显示空间的最大大小,这里假定为(maxWidth, 1000) CGSize maxSize = CGSizeMake(maxWidth, 1000); // 画字符串选项 NSStringDrawingOptions opts = NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading; // 段落选项 NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init]; [style setLineBreakMode:NSLineBreakByCharWrapping]; // 字符串显示属性 NSDictionary *attributes = @{ NSFontAttributeName : [UIFont systemFontOfSize:16], NSParagraphStyleAttributeName : style }; // 字符串bounds CGRect rect = [string boundingRectWithSize:maxSize options:opts attributes:attributes context:nil];