2016-04-10 4 views
2

Я пытаюсь изменить высоту ячеек в UICollectionView, когда ячейка выбрана.Изменение размера ячейки коллекции

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

Как определить другие ячейки, чтобы изменить положение y, изменение высоты ячейки?

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { 

     if let detailsCell = collectionView.cellForItemAtIndexPath(indexPath) as? UserDetailsCell { 

      UIView.animateWithDuration(0.5, delay: 0, options: .TransitionCurlUp, animations: { 

       detailsCell.frame.size.height = 300 

       }, completion: nil) 

     } 


     print(indexPath.row) 
    } 

ответ

1

проблема здесь, что вы рассматриваете отдельную ячейку/элемент индивидуально, вы должны просто использовать автозапуск для выполнения всей работы.

Определить размер ячейки/пункта делегата:

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    if let selectedRows = tableView.indexPathsForSelectedRows { 
     if selectedRows.contains(indexPath) { 
      return 300 
     } 
    } 
    return 40 
} 

И в выборе, вы просто принудительно обновить на макете.

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    tableView.beginUpdates() 
    tableView.endUpdates() 
} 
+0

спасибо !! однако в коллекции view delegate i count find 'heightForRowAtIndexPath' – SNos

+0

Если вы не можете просто использовать UItableView, вам нужно будет создать UICollectionViewFlowLayout, это намного больше работает, я рекомендую, если это возможно, перейти на UITableView. –

+1

Отметьте этот делегат: collectionView: layout: sizeForItemAtIndexPath: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UICollectionViewDelegateFlowLayout_protocol/ –

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