UICollectionView.scrollToItemAtIndexPath 动画与虚拟键盘奇怪地配合
Posted
技术标签:
【中文标题】UICollectionView.scrollToItemAtIndexPath 动画与虚拟键盘奇怪地配合【英文标题】:UICollectionView.scrollToItemAtIndexPath animation works weirdly with virtual keyboard 【发布时间】:2016-04-24 07:20:03 【问题描述】:当我调用scrollToItemAtIndexPath
方法在键盘打开的情况下滚动到底部时,
collectionView.scrollToItemAtIndexPath(indexPath, atScrollPosition: .None, animated: true)
我总是得到这个奇怪的动画。
它首先向下滚动到末尾,然后再次向上滚动,然后再次向下滚动到末尾。为什么会发生这种情况,我该如何解决?
我在 ios 9.3 模拟器中检查过这种情况。
【问题讨论】:
【参考方案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
或者您可以放置一个空白部分。或者其他。
现在它可以正常工作了。
【讨论】:
以上是关于UICollectionView.scrollToItemAtIndexPath 动画与虚拟键盘奇怪地配合的主要内容,如果未能解决你的问题,请参考以下文章