Giter Club home page Giter Club logo

Comments (9)

gh-kL avatar gh-kL commented on July 23, 2024

TS真没办法,必须要给Item挂载ListItem.js才行。因为ts不能随意给Node赋值变量,但Item-Node必须要记录一个_listId,所以...只能这样了。这一点我忘记在说明文档里写了,感谢感谢。

from cocoscreator-list.

LogicCoder avatar LogicCoder commented on July 23, 2024

使用时还发现两个问题

  1. 如果上下滑动有惯性回弹当滑出scollview的范围且进入其他scrollview后,没法自动回弹
  2. 对于高度不同的item,需要设置customSize才能控制,这样有两个问题,一个是item很难立刻就知道height比如Label之类的动态高度,二是如果item数量是变动的,比如满了30个就删除第一个,那么依赖索引设置不同高度的customSize所有的索引都需要重新设置一下,不知道能否能自动识别item的高度

from cocoscreator-list.

gh-kL avatar gh-kL commented on July 23, 2024
  1. 我无法重现,可以通过度盘啥的提供个Demo给我~
  2. “不知道能否能自动识别item的高度”,目前不能,我还想不到有效的方法。论坛里也有其他人说可以让所有Item都全部渲染一遍,以此获取所有的高度数据,可这样就本末倒置了,最初的目的就是要只渲染可视范围内的Item,降低DC。如果有好的方法,我肯定会更新这个组件的,毕竟这个组件我自己也在用。关于Label的动态高度,你设置了label.string = "xxxxxxxxxxxxx";之后,再执行一下label._updateRenderData(true);,这样就能立即渲染Label取得高度。

from cocoscreator-list.

LogicCoder avatar LogicCoder commented on July 23, 2024

1是我在pc上试的,直接鼠标往上拉,如果同一个界面上有两个scollview,你让鼠标进入另一个scollview的范围,然后松鼠标,应该不会反弹,我没仔细验证
2的话既然有ListItem,可以利用起来指定某个node来决定这个item的宽度和高度,在render里就能获取其宽高做设置,现在Label和RichText好像赋值后宽高就计算出来了,不用再调用其他,当然,这只是临时想到的一种方案,不知道是否可行,目前的控件也可以在Render里把宽高的对象传递进去赋值,等渲染到最后一个之后再给customeSize和numitems赋值再渲染一遍,反正比较蹩脚,只能满足部分特定使用情况,控制不当还会陷入渲染的死循环

from cocoscreator-list.

gh-kL avatar gh-kL commented on July 23, 2024

你可以在设置list.numItems之前,调用一下list.calcCustomSize(number)这个接口。这个函数会用单个Item重复回调Render函数取得宽/高。这只是个实验函数,我是不推荐使用的,但这的确能省去很多事。(如果你的item里有文本组件或者Layout组件,请确保他们在Render函数中是立即自适应的。)

from cocoscreator-list.

LogicCoder avatar LogicCoder commented on July 23, 2024

我之前用的那个场景类似于聊天,新增一条消息后先设置list.numItems来加入这条消息,这个时候会自动调用所有的item的Render走一遍,我是在Render函数里判断,走到最后一个Render时再设置list.customSize,然后再设置一遍list.numItems再走一遍渲染(会加个标记,走完后不会再次进这个循环),然后scrollTo拉到底,由于是在Render的时候调整对话框大小,所有刚加入时会闪一下未调整之前的错误展示,感觉可以通过item显隐来控制下

不知道对类似微信的聊天框有啥好建议

from cocoscreator-list.

gh-kL avatar gh-kL commented on July 23, 2024

我在Demo中新增了一个聊天列表的示例场景,可以去看一下。

from cocoscreator-list.

gh-kL avatar gh-kL commented on July 23, 2024

现在TS版已经取消强制挂载ListItem了

from cocoscreator-list.

LogicCoder avatar LogicCoder commented on July 23, 2024

赞,感觉这个组件持续优化下去官方迟早得转正:)

from cocoscreator-list.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.