2015-11-20 2 views
0

Я работаю над анимацией размером около collectionViewCells. Он отлично работает в моем collectionViewController, но в другом UIViewController, где у меня есть маленький collectionView рядом с другими объектами, ячейка будет расти только до размера collectionView. Я бы хотел, чтобы он заполнил весь экран. Каков наилучший способ сделать это?Анимация CollectionViewCell Size To Outside CollectionView Граница - Swift

Вот мой текущий код:

var largePhotoIndexPath : NSIndexPath? { 
    didSet{ 

     var indexPaths = [NSIndexPath]() 
     if largePhotoIndexPath != nil { 
      indexPaths.append(largePhotoIndexPath!) 
     } 
     if oldValue != nil { 
      indexPaths.append(oldValue!) 
     } 
     collectionView?.performBatchUpdates({() -> Void in 
      self.collectionView?.reloadItemsAtIndexPaths(indexPaths) 
      return 
      }){ 
       completed in 

       if self.largePhotoIndexPath != nil { 
        self.collectionView?.scrollToItemAtIndexPath(self.largePhotoIndexPath!, atScrollPosition: .CenteredVertically, animated: true) 
       } 
     } 
    } 
} 

func collectionView(collectionView: UICollectionView, shouldSelectItemAtIndexPath indexPath: NSIndexPath) -> Bool { 
    if largePhotoIndexPath == indexPath { 
     largePhotoIndexPath = nil 
    } 
    else { 
     largePhotoIndexPath = indexPath 
    } 
    return false 
} 

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { 

    let dealImage: UIImage = UIImage(data: self.imageDataArray[indexPath.row])! 
    let dealPhoto: UIImageView = UIImageView(image: dealImage) 

    if indexPath == largePhotoIndexPath { 

     var size = UIScreen.mainScreen().bounds 
     dealPhoto.frame == size 
     return CGSize(width: 300, height: 525) 

    } 
    return CGSize(width: 100, height: 175) 
} 



func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 

    return self.imageDataArray.count 

} 

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 

    let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! TrailInfoCollectionViewCell 

    cell.imageView.image = UIImage(data: self.imageDataArray[indexPath.row]) 

    return cell 
} 

И некоторые изображения до и после того, как я выбираю ячейку:

Before Selection

After Selection

Как вы можете увидеть, что изображение имеет выращенный до размера, который я хочу, но он ограничен collectionView. Возможно ли, чтобы collectionViewCell превысил границы collectionView, или мне нужно будет сделать это по-другому? Я бы просто создал скрытый imageView, но мне нравится анимированный переход.

Благодарим за помощь. Пожалуйста, дайте мне знать, если вам нужны подробности.

ответ

2

clipsToBounds Свойства - это то, что предотвращает рост подвидности за его родителем. Установите значение false и оно должно работать.

+0

Привет, Мика, большое спасибо за ваш комментарий. Звучит достаточно легко, но что именно я должен изменить BoundToView? Я пробовал камеру и изображение, но BoundToView не распознается. Извините, я очень к этому не знаком. Большое спасибо. Jon –

+0

Извините. Я набрал это немного быстро на своем телефоне. Это клипы. Я отредактирую. – Mika

+0

Это работает отлично. Благодарю. Единственная проблема теперь в том, что изображения не центрируются на экране? Вы знаете, как я могу это сделать? Я думал, что строка 'self.collectionView.scrollToItemAtIndexPath (self.largePhotoIndexPath !, atScrollPosition: .CenteredVertically, animated: true)' сделает это для меня, но, по-видимому, нет. Любая дополнительная помощь очень ценится, но большое спасибо за вашу помощь. –

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