2015-08-12 6 views
0

Я использовал два вида коллекций, и они были связаны друг с другом для прокрутки. если прокрутить другую, прокрутка тоже. это обработка в моей didScroll функции делегата, как показано ниже:collection view paging customized

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { 
    var screenHeight = max(Int(UIScreen.mainScreen().bounds.width), Int(UIScreen.mainScreen().bounds.height)) 

    if (collectionView == self.bottomSliderCollectionView) 
    { 
     return CGSizeMake(self.sliderCollectionView.frame.width - 65, 50) 
    }else { 
     return CGSizeMake(self.sliderCollectionView.frame.width , self.sliderCollectionView.frame.height) 
    } 
    } 

    func scrollViewDidScroll(scrollView: UIScrollView) { 

    if (scrollView == self.sliderCollectionView){ 

     // Calculate where the collection view should be at the right-hand end item 
     var contentOffsetWhenFullyScrolledRight = self.sliderCollectionView.frame.size.width * CGFloat(self.workingMenuSlider.count - 1) 


     if (scrollView.contentOffset.x == contentOffsetWhenFullyScrolledRight ) { 

      // user is scrolling to the right from the last item to the 'fake' item 1. 
      // reposition offset to show the 'real' item 1 at the left-hand end of the collection view 

      var newIndexPath = NSIndexPath(forItem: 1, inSection: 0) 
      self.sliderCollectionView.scrollToItemAtIndexPath(newIndexPath, atScrollPosition: UICollectionViewScrollPosition.Left, animated: false) 


     } else if (scrollView.contentOffset.x == 0) { 

      // user is scrolling to the left from the first item to the fake 'item N'. 
      // reposition offset to show the 'real' item N at the right end end of the collection view 

      var newIndexPath = NSIndexPath(forItem: self.workingMenuSlider.count - 2, inSection: 0) 
      self.sliderCollectionView.scrollToItemAtIndexPath(newIndexPath, atScrollPosition: UICollectionViewScrollPosition.Left, animated: false) 


     } 

    } 

    if (scrollView.contentOffset.x < 0) { 

     var newIndexPath = NSIndexPath(forItem: self.workingMenuSlider.count - 2, inSection: 0) 
     self.sliderCollectionView.scrollToItemAtIndexPath(newIndexPath, atScrollPosition: UICollectionViewScrollPosition.Left, animated: false) 
     self.bottomSliderCollectionView.scrollToItemAtIndexPath(newIndexPath, atScrollPosition: UICollectionViewScrollPosition.Left, animated: false) 

    } 

    var contentOffsetWhenFullyScrolledRight = self.sliderCollectionView.frame.size.width * CGFloat(self.workingMenuSlider.count - 1) 

    if (scrollView.contentOffset.x > contentOffsetWhenFullyScrolledRight) { 

     var newIndexPath = NSIndexPath(forItem: 1, inSection: 0) 
     self.sliderCollectionView.scrollToItemAtIndexPath(newIndexPath, atScrollPosition: UICollectionViewScrollPosition.Left, animated: false) 
     self.bottomSliderCollectionView.scrollToItemAtIndexPath(newIndexPath, atScrollPosition: UICollectionViewScrollPosition.Left, animated: false) 

    } 

    if (self.sepratedScroll == true) { 



     if (scrollView == self.sliderCollectionView){ 

      var nesbat = (self.bottomSliderCollectionView.frame.width - 65)/self.sliderCollectionView.frame.width 

      self.sepratedScroll = false 
      self.bottomSliderCollectionView.contentOffset.x = self.sliderCollectionView.contentOffset.x * nesbat 

      self.sepratedScroll = true 

     }else { 
       self.sepratedScroll = false 

       var nesbat = (self.bottomSliderCollectionView.frame.width - 65)/self.sliderCollectionView.frame.width 

       self.sliderCollectionView.contentOffset.x = (self.bottomSliderCollectionView.contentOffset.x)/nesbat 

       self.sepratedScroll = true 
     } 
    } else { 

    } 

} 

как вы видите вар nesbat просчитывает поплавок, который, потому что мой bottomCollection Посмотреть ширина ячейки - 65, чем sliderCollectionView.

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

так, мой вопрос здесь, когда мои слайды bottomCollectionview, который является прокруткой пейджинга, больше ширины его ячеек. Я хочу прокрутить точно ширину ячейки в bottomCollectionView.

Я проверил ответы, которые говорят, чтобы обработать его на экране didScroll, но это нормально для моего дела. У меня слишком много, если нужно обрабатывать бесконечную прокрутку, а также связанные коллекции.

, пожалуйста, помогите мне с прокруткой пейджинга, чтобы установить ширину ячеек, а не ширину всей коллекции. thankx

ответ

0

хорошо, я получил его сам. Я меняю верхнюю высоту коллекции и перемещаю ее по нижнему коллекционному виду. но содержание в xib для нижних ограничений вида просмотра изменилось на +50. , поэтому у меня есть представление коллекции сверху с его содержимым - 50, чем высота представления коллекции, и она находится над bottomCollectionView. , так что у меня есть взаимодействие suer моего верхнего.

проблема решена: D :)