我正在为我的通用应用程序使用 UICollectionView。在每个集合视图单元格内,我都有一个自定义视图,它最终包含一个图像。每个单元格都代表一张扑克牌,因此当点击它时,它会从前向后翻转。我遇到的问题是当我放大该子视图的大小时。如果我在牢房内让它变小,那么一切都很好。没有任何类型的减速。如果我然后将该子视图放大到更大,那么就会出现严重的放缓。不仅在我从上到下滚动浏览集合视图时,而且在我点击单个单元格时也是如此。当一行单元格来自屏幕外时,就会发生滞后。当我点击一张“卡片”并且它从前向后翻转时,也会有延迟。
这个问题似乎只存在于 iPad 版本的应用程序上。当我在我的 iPhone 上运行它时,延迟完全没有问题。
有什么理由说明为什么会发生这种情况?
编辑以添加代码:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView
cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Card" forIndexPath:indexPath];
Card *card = [self.game getCardFromPlayAtIndex:indexPath.item];
[self updateCell:cell usingCard:card withAnimation:NO];
return cell;
}
上面使用的抽象方法:
- (void)updateCell:(UICollectionViewCell *)cell usingCard:(Card *)card withAnimation:(BOOL)isAnimated
{
// Using introspection to make sure that our cell is a PlayingCardCollectionViewCell
if ([cell isKindOfClass:[PlayingCardCollectionViewCell class]]) {
// If it is we an take that cell and cast it to a PCCVC and then pull out it's
// outlet for the PlayingCardView
PlayingCardView *playingCardView = ((PlayingCardCollectionViewCell *)cell).playingCardView;
if ([card isKindOfClass:[PlayingCard class]]) {
PlayingCard *playingCard = (PlayingCard *)card;
playingCardView.rank = playingCard.rank;
playingCardView.suit = playingCard.suit;
playingCardView.faceUp = playingCard.isFaceUp;
playingCardView.alpha = playingCard.isUnplayable ? 0.3 : 1.0;
}
}
}