2016-07-29 3 views
2

У меня есть коллекцияView, и у меня есть расширение для его scrollview, которое помогает мне получить 20-пиксельные ячейки (минимальное пространство из следующей ячейки) прямо на экране, например:Центрируйте ячейку коллекцииView каждый раз, когда заканчивается scrollview

enter image description here

теперь я хочу изменить расширение для центрирования его в контейнер, как это: enter image description here

мое расширение является следующее: (если я могу сделать с любым другим способом, не стесняйтесь сказать это)

extension MyProject : UIScrollViewDelegate 
{ 
    func scrollViewWillEndDragging(scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) 
    { 
     let layout = self.collectionView?.collectionViewLayout as! UICollectionViewFlowLayout 
     let cellWidthIncludingSpacing = layout.itemSize.width + layout.minimumLineSpacing 

     var offset = targetContentOffset.memory 
     let index = (offset.x + scrollView.contentInset.left)/cellWidthIncludingSpacing 
     let roundedIndex = round(index) 

     offset = CGPoint(x: roundedIndex * cellWidthIncludingSpacing - scrollView.contentInset.left, y: -scrollView.contentInset.top) 
     targetContentOffset.memory = offset 
    } 
} 
+0

Разрешен вы пейджинга в CollectionView прокрутке? –

+0

@BharatModi да ничего не изменилось –

ответ

2

Я бы сказал, что

offset = CGPoint(
    x: roundedIndex * cellWidthIncludingSpacing - scrollView.contentInset.left + cellWithIncludingSpacing/2 - scrollView.bounds.size.width/2, 
    y: -scrollView.contentInset.top 
) 

или рассмотреть contentInset лучше

let visibleWidth = scrollView.bounds.size.width 
    - scrollView.contentInset.left 
    - scrollView.contentInset.right 
offset = CGPoint(
    x: roundedIndex * cellWidthIncludingSpacing 
    - scrollView.contentInset.left 
    + layout.itemSize.width/2 
    - visibleWidth/2, 
    y: -scrollView.contentInset.top 
) 
+0

Я постараюсь проверить его до понедельника Я сообщу вам спасибо –

+0

Спасибо Я пробовал это сегодня, и это сработало !! У него есть немного больше пикселей слева, хотя это может быть любая скобка, которая вызывает эту проблему? –

+0

Скорее всего, он исходит из правильной вставки содержимого, не принимаемой в формулу. – PierreMB

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