动态缩放的一些实践经验

近来公司在做dynamic scaling(动态缩放)功能,下面是一些关于自定义输入框控件的实践经验:

改动前后,放大的情况对比:

image.png

关于UI的调整:

  • 首先考虑是开启dynamic font以后,不放大时,不能影响原来的UI。
  • 开启dynamic font通过设置属性来开启。
  • 调整控件之间的约束来修复放大以后的bug。

使用dynamic font以后,不放大时,lineHeight的适配。

  • 给label开启了dynamicScaledFont以后,会生成一个新的UIFont对象,重新设置font,会更新minimumLineHeight,新对象匹配不到字体类型,返回了系统lineHeight。

initialHeight和actualHeight的问题。

  • 为了不影响tk,保留旧的initialHeight、actualHeight。
  • 新增dynamicInitialHeight和dynamicActualHeight,是页面渲染后控件实际高度。
  • 使用了实际布局后的的数值,但是可能会出现bug,因为页面有延迟。

collectionView使用performBatchUpdates刷新的时候,会上下跳动。

  • 尝试自定义floatlayout,取不到cell具体高度。放弃。
  • 尝试不给estimatedItemSize这个预设值,修改collectionViewCell里面preferredLayoutAttributesFitting,还是会跳动。放弃。

collectionView formSelectDoubleLine, helperText不能适配。

image.png

参考资料

猜你喜欢

转载自juejin.im/post/7054913844522516487