iOS 11、iPhone X.UIScrollView在设置contentOffset时向错误方向反弹

iOS 11、iPhone X.UIScrollView在设置contentOffset时向错误方向反弹,ios,swift,uiscrollview,Ios,Swift,Uiscrollview,我对iPhone X、iOS 11.2(模拟器)上的UIScrollView有问题 我注意到,如果我不设置scrollView.contentInsetAdjustmentBehavior=.never,就会发生这种情况 我想实现一个简单的动画,向上滚动元素并在其中滑动另一个元素。显然,当我将contentOffset动画更改为value(0546)时,我会有一点反弹(查看图片): 日志似乎证实了这一点: scrollToBottom: insets top: 0.00; bottom: 74

我对iPhone X、iOS 11.2(模拟器)上的UIScrollView有问题

我注意到,如果我不设置
scrollView.contentInsetAdjustmentBehavior=.never
,就会发生这种情况

我想实现一个简单的动画,向上滚动元素并在其中滑动另一个元素。显然,当我将
contentOffset
动画更改为value
(0546)
时,我会有一点反弹(查看图片):

日志似乎证实了这一点:

scrollToBottom: insets top: 0.00; bottom: 74.00; left: 0.00; right: 0.00;
scrollToBottom: yPos 546.0
scrollToBottom: contentSize(375.0, 1240.0) self.height 768.0
scrollViewDidScroll: contentOffset (0.0, 496.333333333333)
scrollViewDidScroll: contentOffset (0.0, 486.0)
scrollViewDidScroll: contentOffset (0.0, 487.0)
scrollViewDidScroll: contentOffset (0.0, 489.0)
scrollViewDidScroll: contentOffset (0.0, 491.333333333333)
scrollViewDidScroll: contentOffset (0.0, 494.333333333333)
scrollViewDidScroll: contentOffset (0.0, 498.0)
scrollViewDidScroll: contentOffset (0.0, 501.666666666667)
scrollViewDidScroll: contentOffset (0.0, 506.0)
scrollViewDidScroll: contentOffset (0.0, 510.333333333333)
scrollViewDidScroll: contentOffset (0.0, 514.333333333333)
如你所见,开始时大约有10个单位反弹496->486->现在增加

如果(使用完全相同的代码)插入较大的元素-一切正常(检查图像):

和日志:

scrollToBottom: insets top: 0.00; bottom: 214.00; left: 0.00; right: 0.00;
scrollToBottom: yPos 826.0
scrollToBottom: contentSize(375.0, 1380.0) self.height 768.0
scrollViewDidScroll: contentOffset (0.0, 498.666666666667)
scrollViewDidScroll: contentOffset (0.0, 506.0)
scrollViewDidScroll: contentOffset (0.0, 518.333333333333)
scrollViewDidScroll: contentOffset (0.0, 534.666666666667)
scrollViewDidScroll: contentOffset (0.0, 555.0)
scrollViewDidScroll: contentOffset (0.0, 578.666666666667)
scrollViewDidScroll: contentOffset (0.0, 604.666666666667)
scrollViewDidScroll: contentOffset (0.0, 632.333333333333)
scrollViewDidScroll: contentOffset (0.0, 661.0)
这方面的代码相当简单:设置初始元素、设置内容偏移、获取有关已完成动画的代理调用、滑入新元素

似乎如果我关闭内容插入调整行为,它不会发生,但在这种情况下,我必须自己处理插入。这似乎不会发生在配备iOS 11.1的iPhone 6上


你知道为什么会发生这种情况以及如何解决吗?

回答我自己的问题

问题在于iphonex上的
contentSize
contentOffset
计算的组合

我正在计算偏移量,然后重新计算
contentSize
。“new”
contentSize
中存在差异,因此当我尝试滚动(
setContentOffset(\uquo;动画:)
)时,我同时稍微更改了
contentSize
(在日志中可以看到10个点),并获得了反弹效果


显然,对于较大的滚动距离,10个点没有那么重要,因此它们被“插值”掉了。

只需为scrollView\tableView设置ContentInsets-Automatic