Conversation
valid-show-hide.mp4验证看起没问题,验证逻辑如下: |
|
ios 平台兼容性有问题,处理中。 |
|
上面说的这个case确认过了吗?iOS下wx:show由false变为true后是否能够正常撑开渲染? |
iOS 渐变绘制链路存在问题,mpx层目前无法处理,现在方案是根据平台只给android/harmony 优化,验证 demo 如下: 父节点 wx:show + 子节点渐变背景、background-size: 100% 100% 的场景 |
|
如果需要分平台处理iOS无法处理的话,是不是把之前先设置为0,layout之后再设置正确dimensions的条件添加上iOS限定即可,见相关comment所示。 之前加这个逻辑本身是为了处理iOS百分比高宽在wx:show场景下不能正常更新视图的问题,当前的目标如果消除非iOS环境下这个onLayout的等待的话,应该不需要引入新的absolute的布局模式,直接用原始的高宽100%同步渲染应该就可以。 |
可以的,改动后需要三个平台一起再回归下,需要花点时间,有结果了再更新问题状态。 |
|
整体逻辑应该是:
后续我们观察iOS linear渲染bug修复后就可以将逻辑和Android/Harmony进行拉齐。 |
|
三端验证留痕。 platform-comparison.mp4 |
改动说明
优化 Android/Harmony 渐变背景的首次渲染,减少不必要的
onLayout等待,保留 iOS 原有兼容处理。业务侧无需修改模板或样式。
优化 RN 全尺寸linear-gradient背景的首次渲染,避免无差别等待onLayout。仅对无偏移、非对角方向的100% 100%渐变使用四边撑满布局,直接渲染。存在背景偏移、非全尺寸或需计算对角方向时,保留 master 的布局路径和零尺寸保护。布局判断与样式生成共用优化条件,避免两者不一致;保留 master 的尺寸缓存和固定尺寸对角渐变处理。例如容器宽度为200、background-position: 20px 0时,渐变仍保持宽度200,向右偏移并裁剪,不会被left: 20; right: 0压缩成180。验证
wx:show从false切换为true,子节点使用linear-gradient和background-size: 100% 100%,随后反复隐藏、显示。RN 运行时 Jest:14 个测试套件、183 项测试通过;相关 ESLint 和 diff 检查通过。新增组件测试覆盖全尺寸直接渲染、正负偏移、零尺寸恢复及全尺寸与百分比尺寸切换。react-native-linear-gradient 2.8.3原生源码和 Yoga 布局输出验证偏移;7 个用例归零、更新颜色后恢复像素一致。包含 1 个原 PR 对照用例,其恢复成功不代表偏移布局正确。useWrapImageHook,检查全尺寸、正负偏移、居中、对角及半尺寸等 7 种布局;自动和手动归零后均恢复显示。鸿蒙验证使用真实 React Hooks、RN 布局回调及宿主原生渐变组件,但不包含完整
.mpx页面编译和业务生命周期。三端验证均不作为首帧性能量化结果。平台截图
实际业务运行效果:
before.mp4
after.mp4