Как получить кадры ячеек в 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 ответ

Решение

Вам придется рассчитать его самостоятельно, если сможете.

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

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

Другие вопросы по тегам