在 stackoverflow 提了个问题,一直无人回答

2017-03-08 09:09:11 +08:00
 heqichang
在 stackoverflow 提了个问题,但是苦于自己英文水平,中间 on hold 编辑了几次。这样是不是上面的大牛们都看不到这个问题了?浏览量很少哩。我可以删除旧问题,重新提问吗?

顺道求 v2 上的老司机看看有人遇到同样的问题吗?😊

http://stackoverflow.com/questions/42406686/uitableview-will-change-contentoffset-in-ios8-with-swift3-is-this-a-swift3-bug
8563 次点击
所在节点    iDev
39 条回复
airbob
2017-03-08 15:41:46 +08:00
@heqichang 必须用测试机么, simulator 能复现吗?
heqichang
2017-03-08 16:08:33 +08:00
@airbob 你是 ios8 的 simulator 吗?我不确定,因为我没在 simulator 测试过,我这里本地只有 ios10 的 simulator ,没下 ios8 的。
airbob
2017-03-08 16:13:42 +08:00
@heqichang 是的我用的 simulator, 手头上没有 iOS8 device
heqichang
2017-03-08 16:36:55 +08:00
@airbob 我去下载个旧版本 simulator 试试哈。顺道吐槽下 Xcode 里下载旧版本的 simulator 太慢了。。。😅
airbob
2017-03-08 18:17:26 +08:00
dapeng
2017-03-08 18:28:24 +08:00
楼主,你的中文问题描述呢
heqichang
2017-03-08 22:25:13 +08:00
@dapeng 已重新 append 上了
congeec
2017-03-08 22:28:27 +08:00
@chipmuck 而且在 segfault 上解决了人家的问题,连个赞都没有
heqichang
2017-03-08 22:28:30 +08:00
@airbob 是啊,你的看起来没问题,有问题的话,它的 contentOffset 会有比较大的跳跃。话说的我的 simulator 挂机到现在还没下载完。。。
heqichang
2017-03-08 23:02:37 +08:00
@airbob 我下载好 iOS8 的模拟器了, iOS 8.4 的系统,可以重现这个问题的。当加载完多余一屏的色块时,会看到 tableview 有明显的跳动,多加载几个色块之后,往上面滑动也会看到明显的跳跃。
heqichang
2017-03-08 23:07:26 +08:00
@airbob 这里是我的 log

https://gist.github.com/heqichang/89e9f2e29f29b1f39627340313510a1b

注意看里面 446.0 , 554.5 这些地方,明显的有一次大跳跃
chipmuck
2017-03-08 23:18:53 +08:00
@congeec 给你一个赞!
InfinitySam
2017-03-12 14:01:10 +08:00
楼主,我想问问你 cell height 是算出来的么。。。? 还有视觉上有什么不同,你的意思好像是 reload 后 cell 的垂直位置变化了,对吧?
heqichang
2017-03-13 10:19:15 +08:00
@InfinitySam 我随手写的固定的一个高度序列,[150, 500, 150, 150, 150, 300, 100, 300]。是啊,垂直位置发生了变化,但是,同样的代码, 我这里测试,只有在 ios8 ,并且是 swift3 上才会出现这个问题,模拟器 ios8 上也能复现。
xiabob
2017-03-13 17:09:56 +08:00
是的,我迁移到 swift3 ,在 iOS8 上也有这个问题, func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat 方法调用有问题, IndexPath 不全,你也可以测一下
heqichang
2017-03-13 18:22:10 +08:00
@xiabob 是啊,好像是这样的,调 reload 后在 heightForRowAt 方法里的 IndexPath 数目不对,总是少 1 个。你们解决这个问题了吗?
xiabob
2017-03-14 09:56:17 +08:00
tableView(_ tableView: UITableView, numberOfRowsInSection section: Int)返回 1 , func numberOfSections(in tableView: UITableView) -> Int 返回具体的数目,是可行的,不过局限太多了
heqichang
2017-03-14 12:00:00 +08:00
@xiabob 我去!聪明啊!你这方法真可以,把 section 和 row 反一下。真坑爹!幸好正式项目里没有用到多 section ,但只针对 ios 8 来改动的地方还是蛮多的。
soverflowchina
2019-01-18 11:14:58 +08:00
这里肯定有人回答的:
https://www.stackoverflowchina.com

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/345764

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX