1. 奇妙的字体bug
最近设计师想要使用某款非系统字体的数字字体,想了个办法把数字字体提取出来(提取工具是fontZip,提取完才7KB)放到项目中,正常运行,但到组里其他人的电脑上就会遇到iOS10以下的模拟器,UILabel加载这个字体后,只要涉及到渲染的API(比如sizeToFit)就会崩溃,崩溃是停在类似于以下错误的地方
CHECK_RANGE_INDEX: 95 not in range (16 - 0), interpreter value out of range(glyph = 1)
而且最惨的是真机也会...一开始没想到是字体的问题就各种断点,最后发现是自定义字体的问题,在他们的电脑上运行,字体能正常加载,但就是渲染不了...很迷
于是又试了百度的fontmin-app提取就不会崩啦,百度这个提取完才3KB更小了
由于哪里都查不到有人遇到CHECK_RANGE_INDEX错误... 我估计这个错误是TextKit加载完素材和设置后(比如NSSTring,UILabel的各种属性),在渲染的时候渲染失败,在加载下一个位置的时候就越界了
2. 奇妙的UIGestureRecognizer bug
2018.7.17更新
最近在做一个图片浏览器,用到了一个collectionView来显示原图,由于习惯就在cell里面放了一个空白的UIGestureRecognizer做占位,等做完其他功能再来做双击缩放的功能,结果就遇到了一个奇怪的bug:
在图片不能移动的情况下滑来滑去,scrollView的滚动就会完全失效,查了半天以为是添加太多pan手势了,去掉所有pan手势还是会,最后发现就是那个占位的空白UIGestureRecognizer的锅,想了一下,在触发了空白的UIGestureRecognizer后,空白的UIGestureRecognizer应该是由于没有实现重新把它的state 变成 UIGestureRecognizerStatePossible这个操作,结果 导致所有其他手势都在等待它结束
3. 奇妙的UIScrollView bug
2018.7.28更新
最近还是在做类似于微信的图片浏览器,实现下拉dismiss的时候是通过控制CALayer的offsetTime来实现,想要控制offsetTime就需要把layer的speed设置为0
然后bug来了:后面取消dismiss后忘记把speed设置回来,导致在取消下拉dismiss后,双击缩放图片时,图片会不知道飞到哪里去,大概是因为UIScrollView的缩放是通过控制layer来实现的,由于speed为0导致动画无法进行就结束了所以就不知道飞到哪去了,把speed设置为1后就恢复正常