UICollectionViewCell
ユーザーがセルをタップしたときにアニメーションを開始したいと思います。私の考えは、対応するセルを選択してdidSelectItemAtIndexPath
アニメーションをトリガーすることでした。ただし、これは機能しません。
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
// animate the cell user tapped on
ProductCollectionViewCell* cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"ProductReuseID" forIndexPath:indexPath];
[UIView animateWithDuration:5.0
delay:0
options:(UIViewAnimationOptionAllowUserInteraction)
animations:^{
NSLog(@"animation start");
[cell.layer setBackgroundColor:[UIColor colorWithRed: 180.0/255.0 green: 238.0/255.0 blue:180.0/255.0 alpha: 1.0].CGColor];
}
completion:^(BOOL finished){
NSLog(@"animation end");
[cell.layer setBackgroundColor:[UIColor whiteColor].CGColor];
}
];
}
実際には、アニメーションは同時に開始および終了します (ただしanimateWithDuration
、5 に設定されています)。次の試みは、アニメーションをスキップして、たとえば別の境界線スタイルを設定することでした:
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
// animate the cell user tapped on
ProductCollectionViewCell* cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"ProductReuseID" forIndexPath:indexPath];
[cell.layer setBorderWidth:5.0f];
}
ただし、これは何も変更しません (おそらくセルを手動で再描画する必要があるためですか?)。
ユーザーがタップしたときに UICollectionViewCell をアニメーション化する方法はありますか?
敬具、クリスチャン