当我通过键盘打开方式调用scrollToItemAtIndexPath
方法滚动到底部时,
collectionView.scrollToItemAtIndexPath(indexPath, atScrollPosition: .None, animated: true)
我总是得到这个奇怪的动画。
首先向下滚动到最后,然后再向上滚动,然后再向下滚动到最后。为什么会发生这种情况?我该如何解决这个问题?
我检查过这是在iOS 9.3模拟器中发生的。
答案 0 :(得分:1)
UICollectionView
在contentInsets.top != 0
时显示此行为。
我没有明确地设置它,但它已由UIViewController
自动设置。可以通过设置automaticallyAdjustsScrollViewInsets
属性来禁用此功能。
automaticallyAdjustsScrollViewInsets = false
然后奇怪的动画神奇地消失了。无论如何,现在我的集合视图没有顶部空间,因此渲染效果不佳。
要使其正常工作,只需手动设置插入。
// collectionView.contentInset.top = 20 + 44
collectionView.scrollIndicatorInsets.top = 20 + 44
但是如果我们将contentInset.top
设置为非零值,它会再次显示奇怪的动画,因此您不应该设置它。而不是,我们应该尝试另一种解决方法。例如,如果使用流布局,则可以调整UICollectionViewFlowLayout.sectionInset.top
。
collectionView.scrollIndicatorInsets.top = 20 + 44
let flowLayout = (collectionView.collectionViewLayout as? UICollectionViewFlowLayout)
flowLayout?.sectionInset.top = 20 + 44
或者你可以放一个空的部分。或者其他什么。
现在它正常运作。