PDF 课件和源代码下载地址:
作者回复: 当tableView在首次load的时候,tableView会根据estimatedRowHeight来计算在可视区的cell,并且进行初始化来提高性能。因为如果使用实际的cell高度,在初始化时需要进行大量的业务逻辑高度计算而降低性能。而在之后的布局绘制、以及滚动的时候,系统会根据heightForRowAtIndexPath返回的数值进行正确的处理。整体上这个流程不会影响滚动复用的逻辑,只是在初始化时的优化和策略。estimatedRowHeight系统有默认的值,所以推测你的场景使用默认值的时候,屏幕是可以展示下这些cell的(一般会比屏幕展示的多1-2个用于prepare)。当前场景可以设置tableView.estimatedRowHeight为一个较大的值看看效果, 应该就符合你的预期了。
作者回复: 多谢 之后会注意一些Api场景的对比情况
作者回复: 暂时不能哈
作者回复: 不确定是不是使用的Demo,我这边看DEMO是没问题的,可以具体提供下代码,或者将有问题的项目发一下,我这边帮你看下具体的问题。通常这个问题和Simulator或者真机没有关系,一般是由于contentSize设置、cell数量和布局、以及scrollView设置导致的。
作者回复: 是的,准确的说会多几个,尤其在新的api中系统还会进行预加载。但是整体上的逻辑就是回收池不断的回收无须展示的,然后需要展示的从回收池中去取。
作者回复: 没明白你的意思?切换进入什么?
作者回复: xcode版本是多少?我用xcode10.2.1 你用对是beta版的么?