core text高度计算,关于客户端开发之我鉴(七)

最近终于解决了core text的高度计算的问题,困扰了我很久,把解决的方案分享给大家。
在平常的项目中uitextview虽然很好用,但是在千奇百怪的项目需求面前还是心有余而力不足。于是我便想封装成一个模块,参阅了很多资料,大致的思路就是生成一个NSAttributedString的实例,集这段文字的万千样式于一身(PS:特别像集万千宠爱于一身),再根据这个实例把这段文字还有万千的样式一并绘制在屏幕上展示给大家。
本身这个思路非常简单,可是在实际使用中,问题就来了。比如,这些文字并不一定是静态的高度,而是一个动态的高度,而这个动态的高度如何准确计算。(PS:到我现身说法的时候了)一开始我根据字的高度,字间距,行间距计算出了一个大致的高度,进行绘制,可是这个计算出的高度并不准确经常出现多一行,少一行的问题,致使文字显示十分的混乱,排版难看。原因我理解为是在换行的时候会产生一些难以的间距,根本无法这样粗略的计算出来,在大段文字面前就会有很大的差距。在网上找了很多资料,可是使用后依然无法准确的计算。最后,我发现首先是我的思路有一定的问题,而且,计算方法和绘制函数是相互依存的,不一样的绘制方法有不一样的计算方法,计算是计算方法和绘制方法都正确,但是他们不配套也是枉然。(PS:哎,希望是这样的,万一是教程的问题不知道要让多少码农熬通宵了)
说一下我的思路,
1、首先初始化一个模块的实例纯init就行。
2、根据文字和文字的样式生成一个NSAttributedString的实例。
3、设置frame属性,指定宽度,高度给大一点比如 CGFLOAT_MAX。
4、这时通过 CTFramesetterSuggestFrameSizeWithConstraints这个函数计算出高度。
5、显示的时候绘制就可以了。
根据上面的思路就可以完美的显示大段而且万千样式的文字了 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值