2017-12-20 19 views
3

を設定するときにiPhone X. UIScrollViewのは間違った方向にバウンス私はiPhone X、iOSの11.2にUIScrollViewの持つ問題(シミュレータ)iOSの11、contentOffset

を持っている私はscrollView.contentInsetAdjustmentBehavior = .neverを設定しない場合は、それが起こることに気づきました。

スクロール要素の単純なアニメーションを実装し、別の要素を内側にスライドさせたいと考えています。私は、私は少しバウンスを取得(0, 546)評価に生き生きcontentOffsetを変更したときに明らかに(チェック画像):周りにあるあなたが見ることができるように

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) 

:ログで確認しているようだ

incorrect behaviour

10ユニットが最初に496→486→バウンスして増加しています。

(正確に同じコードで)私が大きな要素を挿入した場合 - すべてが正常である(画像を確認してください):

normal behaviour

とログ:

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では発生しないようです。

これがどうして起こるのか、それを修正する方法はありますか?

答えて

0

私自身の質問に答える。

問題は、私はオフセット計算し、その後contentSizeを再計算されたiPhone X.

contentSizecontentOffset計算の組み合わせでした。 「contentSize」に矛盾があり、スクロールしようとしたときに(setContentOffset(_:animated:))、contentSizeを少し変更して(ログで確認できる10ポイント)、バウンス効果を得ていました。

明らかに、より大きなスクロール距離の場合、10ポイントはそれほど重要ではないため、「補間」されました。

0

スクロールビュー\ tableViewに対してContentInsets - Automaticを設定するだけです