专栏名称: 微信客户端技术团队
微信移动客户端开发团队官号,分享微信在Android、iOS、Mac、Winphone、Windows等平台的开发经验、前沿技术,以及一些鲜为人知的小故事。
目录
相关文章推荐
募格学术  ·  上海交大博士生,全球唯一获奖者 ·  昨天  
研之成理  ·  金催化,Nature Chemistry! ·  4 天前  
募格学术  ·  部属高校,迎来新校长! ·  2 天前  
51好读  ›  专栏  ›  微信客户端技术团队

微信“15。。。。。”背后的故事

微信客户端技术团队  · 公众号  ·  · 2017-10-10 15:09

正文

请到「今天看啥」查看全文




该函数返回了一个对象a其包含两个参数,一个是断句的位置(a.wwk),及断句后的文字长度(a.width),主要是因为在判断换行的时候,因为考虑到标点符号不应该位于行首这条规则,需要将当前行最后一个非标点符号截断到下一行,而截断受另外一条规则限制,截断不可以为英文或者数字,这导致“15。。。。。。。。。。。。。。。”最后返回截断的位置为0,并将结果返回,所以才产生了死循环,造成这个bug。


那么问题来了
很多网友也开始讨论,为什么要自己排版,放着好端端的系统TextView不用?到底好在哪里?效果是怎么样的?
不着急,诸多问题的来龙去脉得容小弟一一道来。

三、为什么有这个需求

实际上,世界上大部分需求都源于用户。这需求还得得益于之前有几个用户会反馈说“微信Android的聊天气泡好像没有iOS的美观,比较死板”。这个问题也引起了我们的关注。
那事实是否如此呢?我们对iOS和Android进行了对比,如下图:


从效果图看,iOS确实比Android好看了些,至少最右边并不会有多余的padding这么明显,简单来说多余的padding产生的原因是气泡宽度受屏幕大小的限制,所以这里TextView即是气泡有了最大的宽度限制,当剩下的空间不足以容下一个字符时,系统排版会选择自动换行,导致了这个问题的产生。


又一个问题
那么,iOS的排版是否就是完美的呢,其实仔细观察并非这样,从上图可以看出,除了Android,iOS也会有这种问题,那就是气泡中的文字左右参差不齐。
一开始我们怀疑,会不会是微信应用本身使用该组件不当的原因造成,而非系统组件的问题。于是乎,在手机上,我们随便找了一些热门app,仔细对比,同样的问题依然存在。


知乎:

掘金:

支付宝:

等等。。。







请到「今天看啥」查看全文