- (CGRect)boundingRectWithSize: options: attributes:计算label高度

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);


就这样了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值