Как получить кадры ячеек в UICollectionView до представления экрана?
Каков наилучший способ получить позиции первых 3 ячеек в представлении коллекции UICollectionViewController, прежде чем помещать его в стек навигации?
Например:
let collectionViewController = SomeCollectionViewControllerSubclass(data: someData)
// @ TODO: get the frames of the first three cells here so I can create a fancy transition
self.navigationController.pushViewController(collectionViewController, animated: true)
Вот что я пытался:
let collectionViewController = SomeCollectionViewControllerSubclass(data: someData)
// force load the view
let view = collectionViewController.view
// try to get a cell directly (result: nil)
println(collectionViewController.collectionView.cellForRowAtIndexPath(NSIndexPath(forRow: 0, inSection: 0)
// try to ask the layout for the cell attributes (result: CGRectZero)
println(collectionViewController.collectionView.collectionViewLayout.initialLayoutAttributesForAppearingItemAtIndexPath(NSIndexPath(forRow: 0, inSection: 0)))
self.navigationController.pushViewController(collectionViewController, animated: true)
1 ответ
Решение
Вам придется рассчитать его самостоятельно, если сможете.
Вы не можете получить доступ к представлениям ячеек до того, как они появятся на экране, потому что они будут созданы, когда система должна отобразить их, чтобы избежать их создания, если в этом нет необходимости.
Таким образом, вы должны полагаться на свои знания о расположении ячеек, чтобы знать, сможете ли вы оценить их положение (например, всегда ли ваши ячейки имеют одинаковую высоту).