2015-08-18 3 views
0

Как заставить UIScrollView прекратить перетаскивание в конце представления и привязать его к правильной позиции? Я попытался, используя следующий код, но в то время как он правильно затормаживается, и щелкает в идеальное положение в верхней части представления, он не позволяет мне прокручивать вниз:правильный scrollViewWillEndDragging код?

func scrollViewWillEndDragging(scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) { 

     let layout = self.collectionView?.collectionViewLayout as! UICollectionViewFlowLayout 

     let itemHeightIncludingSpacing = self.view.frame.height + layout.minimumInteritemSpacing 

     var offset = targetContentOffset.memory 

     let index = (offset.x + scrollView.contentInset.bottom)/itemHeightIncludingSpacing 
     let roundedIndex = round(index) 

     offset = CGPoint(x: roundedIndex * itemHeightIncludingSpacing - scrollView.contentInset.bottom, y: -scrollView.contentInset.top) 
     targetContentOffset.memory = offset 
    } 

вот вершина моего свиток вид:

enter image description here

вот дно, его не в состоянии его должно быть, как вы можете видеть. она должна быть на одном уровне со значением смещения нижней так же, как в верхней:

enter image description here

как я получить свиток, чтобы остановить поток так же, как наверху?

ответ

0

Вы сделали расширение UIScrollView, которое имеет этот метод? Это не существует, но scrollViewDidEndDragging (scrollView: UIScrollView, willDecelerate decelerate: Bool). Если это ваш собственный метод в расширении, убедитесь, что он называется где-то в вашем коде (например, метод делегата, о котором я упоминал). Кроме того, сброс параметра ничего не делает для scrollView. Я бы предложил другой подход.

Я не уверен, что вы здесь просите. Не хотите ли вы, чтобы контент был вынут за край экрана, прежде чем он отскакивает назад? Если это так, вам не нужен этот метод. Просто добавьте self.myScrollView.bounces = False в viewDidLoad()

Edit: Ok попробовать эту
Func CollectionView (CollectionView: UICollectionView, расположение collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex раздел: Int) -> UIEdgeInsets {
возвращение UIEdgeInsetsMake (0, 0, 0, 0)
}

+0

, пожалуйста, уточните мой отредактированный вопрос в секунду –

+0

, пожалуйста, зарегистрируйтесь сейчас –

+0

это коллекция? также, см., если мое исправление что-то исправляет для вас. –

Смежные вопросы