我有一個UICollectionView
與30個項目UICollectionViewCell
裏面。有8個單元目前可以在屏幕上看到,其餘幾乎看不見。我能夠從所有這些可見單元格中獲取幀值。從所有(可見和不可見)獲取框架UICollectionViewCell
我的問題是我該怎麼做才能從所有單元格中獲取幀值,包括隱形單元格。
這是我的代碼。
// some code before
for (int i = 0; i < [collectionView numberOfItemsInSection:0]; i++) {
cell = [collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:i inSection:0]];
if (!cell) {
[collectionView performBatchUpdates:^{
[collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:i inSection:0] atScrollPosition:UICollectionViewScrollPositionTop animated:NO];
[collectionView reloadData];
} completion:^(BOOL finished) {
cell = [collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:i inSection:0]];
NSLog(@"- after batch update %d %@", i, NSStringFromCGRect(cell.frame));
}];
}
NSLog(@"- %d %@", i, NSStringFromCGRect(cell.frame));
}
// another long code
結果是,我能夠得到前8個細胞的正確幀。接下來的單元格(不可見的單元格)有錯誤的框架。
這是日誌:
2013-07-08 16:38:57.904 My App[71245:c07] - 0 {{2, 2}, {217, 326}}
2013-07-08 16:38:57.905 My App[71245:c07] - 1 {{231, 2}, {217, 326}}
2013-07-08 16:38:57.906 My App[71245:c07] - 2 {{460, 2}, {217, 326}}
2013-07-08 16:38:57.906 My App[71245:c07] - 3 {{689, 2}, {217, 315}}
2013-07-08 16:38:57.907 My App[71245:c07] - 4 {{689, 340}, {217, 326}}
2013-07-08 16:38:57.909 My App[71245:c07] - 5 {{2, 340}, {217, 329}}
2013-07-08 16:38:57.909 My App[71245:c07] - 6 {{231, 340}, {217, 315}}
2013-07-08 16:38:57.910 My App[71245:c07] - 7 {{460, 340}, {217, 286}}
2013-07-08 16:38:57.910 My App[71245:c07] - 8 {{0, 0}, {0, 0}}
2013-07-08 16:38:57.911 My App[71245:c07] - 9 {{0, 0}, {0, 0}}
2013-07-08 16:38:57.911 My App[71245:c07] - 10 {{0, 0}, {0, 0}}
2013-07-08 16:38:57.912 My App[71245:c07] - 11 {{0, 0}, {0, 0}}
2013-07-08 16:38:57.912 My App[71245:c07] - 12 {{0, 0}, {0, 0}}
2013-07-08 16:38:57.913 My App[71245:c07] - 13 {{0, 0}, {0, 0}}
2013-07-08 16:38:57.913 My App[71245:c07] - 14 {{0, 0}, {0, 0}}
2013-07-08 16:38:57.904 My App[71245:c07] - after batch update 8 {{689, 640}, {217, 326}}
2013-07-08 16:38:57.905 My App[71245:c07] - after batch update 9 {{689, 640}, {217, 326}}
2013-07-08 16:38:57.906 My App[71245:c07] - after batch update 10 {{2, 640}, {217, 326}}
2013-07-08 16:38:57.906 My App[71245:c07] - after batch update 11 {{231, 640}, {217, 315}}
2013-07-08 16:38:57.907 My App[71245:c07] - after batch update 12 {{460, 920}, {217, 326}}
2013-07-08 16:38:57.909 My App[71245:c07] - after batch update 13 {{2, 920}, {217, 329}}
2013-07-08 16:38:57.909 My App[71245:c07] - after batch update 14 {{231, 920}, {217, 315}}
感謝它的工作 – nvl