CGSize size = [likeStr sizeWithFont:KLikeLabelFont constrainedToSize:CGSizeMake(CONTENT_WIDTH-24,100000) lineBreakMode:NSLineBreakByWordWrapping];
这个方法计算文本高度 图片可以看出来这个方法已经过时了,当你点进去方法内部之后你会发现
- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(NSLineBreakMode)lineBreakMode NS_DEPRECATED_IOS(2_0, 7_0, "Use -boundingRectWithSize:options:attributes:context:"); // NSTextAlignment is not needed to determine size
不让用了
推荐使用
"Use -boundingRectWithSize:options:attributes:context:"
这里就说下这个方法的使用
平时我们用这个方法主要是计算label的高度
我这里直接贴上我写的内容了,
NSString *sst = @"context上下文。";
UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(100, 100, 200, 10000)];//这里高度10000 是自己写的,如果写的小了,开始的时候就不会跟着扩张了
[self.view addSubview:textView];
textView.text = sst;
textView.backgroundColor = [UIColor lightGrayColor];
NSAttributedString *attrStr = [[NSAttributedString alloc] initWithString:textView.text];
NSRange range = NSMakeRange(0, attrStr.length);
NSDictionary *dic = [attrStr attributesAtIndex:0 effectiveRange:&range]; // 获取该段attributedString的属性字典
// 计算文本的大小
CGSize textSize = [textView.text boundingRectWithSize:textView.bounds.size // 用于计算文本绘制时占据的矩形块
options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin // 文本绘制时的附加选项
attributes:dic // 文字的属性
context:nil].size; // context上下文。包括一些信息,例如如何调整字间距以及缩放。该对象包含的信息将用于文本绘制。该参数可为nil
textView.frame = CGRectMake(100, 100, 200, textSize.height*(1+0.18)+10);//这里+10 这里textSize.height是文字的高度,/如果不加(1+0.18),输入框的高度一直只是文字的高度,少了中间的间隔,不协调,+10是为了一行的时候输入框高度 / 宽度自己定义,或者高度写死都行看自己需要
NSLog(@"w = %f", textSize.width);
NSLog(@"h = %f", textSize.height);
就这样了