boundingRectWithSize 的使用, 计算UILable高度, 包含Emoji及多属性string

Android HTTPS抓包证书配置全解:Proxyman实战避坑指南 HTTPS抓包本质是中间人(MITM)通信的可信建立过程,其核心在于客户端对代理根证书的信任链配置。在Android平台,自7.0起系统默认不信任用户安装的CA证书,必须通过Network Security Config显式声明trust-anchors,将Proxyman导出的PEM格式根证书纳入App级信任锚点。这一机制区别于iOS和桌面浏览器,导致大量开发者卡在‘证书已安装却无法解密’的误区。技术价值在于打通开发调试闭环:精准定位SSLHandshakeException、绕过证书固定、支持React 阅读详情

iOS的文字高度计算一直是个问题, 苹果也一直在改, 这几天看了一下 boundingRectWithSize 方法.

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

  

踩了几个坑后, 总算找到比较好的使用方法.

 

参考: http://stackoverflow.com/questions/13621084/boundingrectwithsize-for-nsattributedstring-returning-wrong-size

使用时的注意事项:

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

NSFontAttributeName

NSForegroundColorAttributeName

 

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

NSStringDrawingUsesLineFragmentOrigin

NSStringDrawingUsesFontLeading

 

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

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

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

 

 

 

附代码:

 

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被切掉.
基于ZYNQ的HP总线与DDR交互:实现PL与PS高效数据传输的完整指南 本文将深入探讨如何通过AXI HP总线实现PL与PS的DDR交互,结合代码示例、硬件配置与创新优化,助力开发者掌握这一关键技术。ZYNQ内部通过AXI HP接口直接连接PL与DDR控制器,PL通过AXI协议发送读写请求,绕过PS的CPU直接操作DDR。通过AXI HP总线实现PL与PS的DDR交互,开发者可充分发挥ZYNQ异构架构的优势。在Xilinx ZYNQ系列芯片中,PS(Processing System)与PL(Programmable Logic)的协同设计是其核心优势。 阅读详情

相关推荐

Windows Pychram部署Unet++过程

windows系统 在pycharm平台上配置并跑通Unet网络 这里我用的是B站课程里的资源《唐宇迪Unet图像分割语义分割实战》

ArcGis_Niu的博客 803

boundingRectWithSize计算不准确 显示不全 问题的分析与解决

最近项目中,用boundingRectWithSize计算的文本高度显示不全 原因一般有以下几点: 1、label的font设置的和计算时候设置的不一致,尤其是xib 设置的时候; 2、有可能是计算出的高度是CGFloat的类型,在设置UILabel或cell高度的时候,由于四舍五入导致有一点点的误差。 解决办法: 1、记得统一设置成一致的,xib的可以在awakeFromNib中重新设置一遍 2、在保证1设置没问题之后,你会发现依然不行,😄,此时就是第二种原因导致的了,可以这样:计算出的高度进行向上取整

操作猛如虎的博客 3202

STM32CubeMX最新版下载安装全攻略(附官网访问问题解决方案)

本文提供了STM32CubeMX最新版的详细下载与安装指南,并针对国内开发者常见的官网访问缓慢、注册验证邮件延迟等问题,给出了实用的解决方案和备选策略。通过清晰的步骤解析,帮助用户快速部署这一强大的STM32图形化配置工具,从而高效启动嵌入式开发项目。

weixin_28256233的博客 194

iOS计算宽高的函数 boundingRectWithSize

如果需要计算一行文字的宽度,则传入的size固定一行的高度,宽度设为MAXFLOAT,就可以得出一行文字所占的宽度。boundingRectWithSize 函数一般固定传入size的宽度,高度设为MAXFLOAT,自动计算宽度。这个函数不支持计算多行文字的宽度,因为宽度本来就不确定,折行的位置也不确定,也就无法计算多行。

qq_26139541的博客 1552

TruckSim与Simulink联合仿真中的车轮转角精确控制策略

本文深入探讨了TruckSim与Simulink联合仿真中实现车轮转角精确控制的关键策略。针对多轴车辆路径跟踪时转角指令失灵的常见问题,核心在于正确配置TruckSim转向轴的外部输入模式(Advanced Settings),并确保仿真接口的稳定搭建。文章详细解析了从单轴到多轴协同转向的配置方法,并提供了提升MPC路径跟踪精度的实战技巧与调试经验。

weixin_29035147的博客 367

嵌入式定点PID控制器:mrm-pid极简实现与实时控制实践

PID控制器是自动控制领域的基础算法,其核心在于比例、积分、微分三环节的协同调节。在资源受限的嵌入式系统中,传统浮点PID易受时序抖动、内存分配不确定性及FPU依赖影响,难以满足毫秒级确定性响应需求。定点PID通过整数运算替代浮点计算,显著提升执行周期稳定性与跨平台兼容性,成为电机控制、传感器补偿等实时场景的关键技术路径。mrm-pid库以位置式结构、int32_t增益参数、int64_t积分累加器和无动态内存设计,实现了超低开销(12–28 CPU周期)与完全可审计的闭环内核,天然适配Cortex-M系列

weixin_31659095的博客 571

ios 文字自适应,随文字增多,高度变化

lable文字自适应高度,高度随文字的增多而变化。boundingRectWithSize计算的高度不准确

xisan_10的博客 4410

Android 16强制横竖屏设置

但开发者端的响应却相对滞后,特别是中小型开发团队受限于大屏设备市场渗透率(截至2023年Q2,Android平板全球激活量约1.2亿台,不足手机设备5%)及开发成本考量,适配优先级普遍偏低。这种适配滞后已形成恶性循环——开发者因设备基数不足降低适配意愿,而用户体验缺陷又反向抑制大屏设备的市场接受度。要破解这一困局,既需要Google持续优化Jetpack Compose等现代化UI工具链,更需要建立开发者激励体系,通过应用商店流量倾斜、开发补贴等经济手段提升适配投入产出比。再不肯好好适配大屏设备?

xiangzhihong8的专栏 978

iOS 使用 boundingRectWithSize: 计算 UILabel 高度错误的解决方案

转: http://www.jianshu.com/p/c2b8a7940d4d 在使用boundingRectWithSize: 计算 UILabel 高度,显示出来后 Label 内容显示不全,这种情况怎么治呢? Demo地址:Demo github 地址 分析后可能存在的两个原因: 1.使用boundingRectWithSize:计算时传入的相关

smilebigdear的专栏 1万+

基于Python实现学习进度跟踪系统

{{ task }}: {{ "%.1f"|format(hours) }}小时

寒寒豆豆软件公司的博客 195

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

ios boundingRectWithSize 方法使用

ios boundingRectWithSize 方法使用 此方法是ios中计算有属性的文字所需要占有的空间矩形. 直接上Demo 代码: UILabel *lbTemp =[[UILabel alloc] initWithFrame:CGRectMake(20, 20, 100, 700)]; lbTemp.backgroundColor = [UIColor b

a377943483的博客 854

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

boundingRectWithSize 的使用, 计算UILable高度, 包含Emoji及多属性string.

iOS的文字高度计算一直是个问题, 苹果也一直在改, 这几天看了一下 boundingRectWithSize 方法. - (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options context:(NSStringDrawingContext *)context NS_AVAILABL

u010850094的博客 1128

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

TextKit学习(四)通过boundingRectWithSize:options:attributes:context:计算文本尺寸

之前使用了NSString类的sizeWithFont:constrainedToSize:lineBreakMode:方法来计算一段文本的尺寸大小,但是该方法已经被iOS7 Deprecated了,而iOS7新出了一个boudingRectWithSize:options:attributes:context方法来代替。现在可以通过boundingRectWithSize:options:attributes:context:来计算文本的尺寸。

Jymn_Chen 9万+

iOS 【boundingRectWithSize】

计算给定文本字符串所占的区域大小

CoderZYWang 1637

iOS boundingRectWithSize计算文字高度不准问题

UILabel有两个计算文字大小的方法: 1.针对对富文本计算 NSAttributedString - (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options context:(nullable NSStringDrawingContext *)context NS_AVAILABL...

Lee优快云77的博客 6192

使用boundingRectWithSize:计算高度时的注意问题

1.使用boundingRectWithSize:计算高度时传入的属性要和Label保持一致 2.计算得出的高度类型为CGFloat类型在使用时可能存在四舍五入等情况的误差,请使用ceil()函数取整 3.如果文本中包含\n\r等字符时会被当做普通字符计算,而到了UITextView等空间中会被换行等操作要注意处理 4.当使用该方法计算富文本高度时,若富文本包含中文且设置了行高,当文字只有一...

weixin_30585437的博客 599

boundingRectWithSize获取高度不准

当我们利用这个方法获取指定宽度,指定字体的高度时在机型与xib文件中的字体大小不同时会出现计算误差,这时候我们设置两个地方就能解决。 1.label的lineBreakMode = NSLineBreakByWordWrapping 2.直接调用这个方法即可 重点的参数是options,大家注意一下。 还有就是因为涉及到界面适配,所以难免出现小数,这时候采用四舍五入并且加1可以防止小数问题。 ...

lidongxue的博客 2444

iOS:(boundingRectWithSize)按大小计算字符串高度

NSString *text = @"这里要很多字符,我就不打了……"; NSAttributedString *attributeString = [[NSAttributedString alloc] initWithString:text attributes:attributes]; NSRange range = NSMakeRange(0, attributeString

iOSDavinLee的专栏 994

boundingRectWithSize 的使用

- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options context:(NSStringDrawingContext *)context NS_AVAILABLE_IOS(6_0); NSStringDrawingOptions 的值, 在多行的情况下, 至少要有   NSStrin

fan1250150367的博客 635

使用boundingRectWithSize计算内容高度的坑

iOS中,根据给定的内容、字体,宽度,计算文本高度的函数,iOS7之前使用sizeWithFont,iOS7之后使用boundingRectWithSize。- boundingRectWithSize:options:attributes:context: Calculates and returns the bounding rect for the receiver drawn using

xjkstar的专栏 1万+

boundingRectWithSize计算文字高度不准问题

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33804990的博客 469

【IOS开发基础系列】UITextView专题

1 常用开发技巧1.1 常用技巧1.1.1 boundingRectWithSize动态计算TextView高度(contentSize计算不准确)此法计算不准确:CGRect frame = self.serTextView.frame;frame.size.height = self.serTextView.contentSize.height;self.serTextView.frame =...

junbaozi的专栏 167

使用boundingRectWithSize字符串高度的计算

使用boundingRectWithSize计算字符串的高度。示例代码:NSString *message = @"字符串高度的计算"; CGFloat height = [message boundingRectWithSize:CGSizeMake(320.0f, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attribute...

番薯大佬的专栏 2940

boundingRectWithSize计算高度不准确

新api计算高度不准确时,请注意参数问题, options,attributes CGRect rect= [str boundingRectWithSize:CGSizeMake(100, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading attributes:@{NS

一个程序猿的故事 1万+

html ios取文本长度,iOS 计算字符串长度-boundingRectWithSize:

iOS 7.0之前用sizeWithFont:(计算的不是很准确)CGFloat width1=[(NSString *)obj sizeWithFont:[UIFont systemFontOfSize:16] constrainedToSize:CGSizeMake(1000, FONTHEIGHT)].width;iOS 7.0之后用 boundingRectWithSize:返回文本绘制所...

weixin_39701735的博客 227
上一篇: iOS开发官方文档汇总
下一篇: OpenSSL 相关
trandy
博客等级 码龄17年 79粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值