2.0.2 正式版 scrollview 编辑器效果与预览效果不一致(未考虑content初始坐标)

for https://github.com/cocos-creator/engine/pull/3158

scrollView获取不到 content 属性 , demo见附件。

NewProject1.rar (423.4 KB)

嗯,要么这个PR有啥前置PR我没打,要么就有其他潜在的问题,

去掉

notify (oldValue) {
    this._calculateBoundary();
}

重新编译后,就可以得到content了,问题一定不简单哦~

最新的 PR 修改了 内置控件属性导致读取 content 数据失败,需要重新手动绑定 content 节点到 ScrollView 脚本上,该问题已修正,请更新到最新的 PR …感谢您的反馈。:sweat:

1赞

非常感谢,已验证,可以获取到 content。但这个 PR 似乎没有fix要解决的问题,不是应该解决编辑器与预览效果不一致的问题吗,但实际上还是老样子。

截图 Demo:
NewProject.rar (285.7 KB)

这个问题,我们会通过调整内置控件来同一样式,具体的修复内容可能不会立即进行处理,目前你只能通过手动的调整 position 去对齐了。

核心问题应该是,content 节点的 x、y 初始坐标没有反映在 ScrollView 里(或者说初始坐标被组件重新赋值了),造成 content 节点的定位偏差。上次你给的解决方法是使用 Widget ,但那似乎没有在根本上解决这个确实存在的问题。

建议引擎组再讨论下,这个不是统一样式的问题。

手动调整 position 是不可行的,因为控件本身会修改初始值

我可以加载完内容后手动把 content 的坐标再赋值回去,但这样造成的结果就是 ScrollView 每次显示列表会间歇性错位。

你可以自己试试。

这种比较反认知的问题后续肯定有很多人反馈,建议还是趁早解决。

其实我理解上修改很简单,就是在定位时把 content 节点的初始坐标考虑进去就可以了。
现在控件取的坐标应该只考虑了 view 的宽高

content 位置本身是不可调的,组件本身设计就是按照 content 内容不可调节设置的。content 位置是通过 View Boundary 定位的,你可以通过调节 View 的的边界来调整 content 的内容。不建议直接调节 content position。

对的,确实不能调,不是要在运行时调,只是要把 content 节点的初始位置考虑进去,因为他也是一个正常的node,如果不让设置初始值,请把content节点坐标设置为只读

非常感谢,不知道为什么之前初始位置有偏差。不过我们这边调整下新建的 Scrollview 中的 content 就行了吧?一般也不会有人去修改里面的东西。

设置好目前是没用的,详见demo

不是运行时调整,只要content节点的初始坐标跟之前版本一样能有效果就行。谢谢:stuck_out_tongue_winking_eye:

达到的效果就是 content节点 在 ScrollView 滚动到初始位置时,与设置的初始位置坐标一样,这在我理解是合理的,况且,之前版本也都是这个效果。

目前是, content 节点滚动到的初始位置不是设置的初始位置,而是控件自己重新计算得到的一个值。

根据你目前的反馈,将在下个小版本时针对内置控件进行位置修正。感谢您的认真反馈。:slightly_smiling:

2.0.2 正式版本问题依旧啊,编辑器效果与 chrome 预览效果不一致

截图 Demo:
NewProject.rar (285.7 KB)

目前 scrollview 控件目前经过调整 content 对象由对齐 ScrollView 父节点改为对齐 view 下一级父节点,如果希望两组对象呈现相同的效果建议手动调整 view 对象属性如下图:


最后呈现效果:

@xduooo

当然可以按你的改法(或者其他N种方法也可以)为了项目调整的让两者一致,

但目前,显示与预计效果不一致也是个问题啊,毕竟,不可能强迫开发者必须改哪个属性~~~

除非把某些属性改为只读,不让开发者修改。

谢谢反馈,你说的是没错的,这个后续会进行改进

这里其实 content 的坐标应该是只读的才对,它是根据 view 的坐标,大小来进行计算

你可以先重新赋值一下 content 来复位一下 content 的坐标

1、这边达到效果可以有很多种方法, 但希望 creator 功能设计上能够减少此类别扭的设计,就目前来看,scrollview这个设计思路,已经很别扭了,把content节点坐标改成只读很奇葩(content这样一个正常的 cc.Node 因受到歧视遭受10000点伤害),我认为正确的思路,应该是在之后的content坐标计算中,考虑他的初始坐标,就可以了。
2、重新赋值content坐标复位不可行,会莫名其妙的跳

  1. 因为你在编辑器不管怎么设置 content ,运行起来以后还是会根据 view 进行重新计算一次 content 的

  2. 不太可能把,你直接拖动 contnet 到

就可以了