2016-04-24 88 views
0

工作古怪當我打電話scrollToItemAtIndexPath方法來滾動到底用鍵盤上,UICollectionView.scrollToItemAtIndexPath動畫與虛擬鍵盤

​​

我總是得到這個奇怪的動畫。

Weird animation

它首先向下滾動到結束,向上滾動再次一點,向下滾動再次結束。爲什麼會發生這種情況,如何解決這個問題?

我檢查過這發生在iOS 9.3模擬器。

回答

1

UICollectionView當它的contentInsets.top != 0顯示此行爲。 我沒有明確地設置它,但它是由UIViewController自動設置的。這可以通過設置automaticallyAdjustsScrollViewInsets屬性來禁用。

automaticallyAdjustsScrollViewInsets = false 

然後奇怪的動畫神奇地消失。無論如何,現在我的收藏視圖沒有頂層空間,所以渲染效果很差。

Badly rendered UI

爲了使這個手工工作,只是設置插圖。

// 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 

或者你可以把一個空白部分。管他呢。

現在它工作正常。

Good animation