boundingRectWithSize 的使用

- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options context:(NSStringDrawingContext *)context NS_AVAILABLE_IOS(6_0);

使用时的注意事项:

1: NSAttributedString 的每个部分都要至少设置两个属性: 

NSFontAttributeName

NSForegroundColorAttributeName

 

2: NSStringDrawingOptions 的值, 在多行的情况下, 至少要有   

NSStringDrawingUsesLineFragmentOrigin

NSStringDrawingUsesFontLeading

 

3: 如果文字中可能会出现emoji表情的话, emoji的高度比文字要高一点点, 

我的方便是简单的在高度基础上加了两个像素.  

(用CoreText可能会好一些, 但相对复杂.)

4.

labels.numberOfLines = 0;      行数可变

附代码:

 

NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:fullDescAndTagStr];

NSRange allRange = [fullDescAndTagStr rangeOfString:fullDescAndTagStr];
[attrStr addAttribute:NSFontAttributeName
                value:[UIFont systemFontOfSize:13.0]
                range:allRange];
[attrStr addAttribute:NSForegroundColorAttributeName
                value:[UIColor blackColor]
                range:allRange];

NSRange destRange = [fullDescAndTagStr rangeOfString:tagStr];
[attrStr addAttribute:NSForegroundColorAttributeName
                value:HEXCOLOR(0x009cdd)
                range:destRange];


CGFloat titleHeight;

NSStringDrawingOptions options =  NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading;
CGRect rect = [attrStr boundingRectWithSize:CGSizeMake(labelWidth, CGFLOAT_MAX)
                                    options:options
                                    context:nil];
titleHeight = ceilf(rect.size.height);

return titleHeight+2;  // 加两个像素,防止emoji被切掉.


转载于:https://my.oschina.net/u/2483082/blog/522508

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值