gpt4 book ai didi

ios6 - 点击动画 UICollectionViewCell

转载 作者:行者123 更新时间:2023-12-04 00:04:43 27 4
gpt4 key购买 nike

我想在 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 时,您是否有任何想法如何为它设置动画?
亲切的问候,
基督徒

最佳答案

看起来您正在获取错误的单元格。发送 dequeueReusableCellWithReuseIdentifier:forIndexPath: message 不会在第二个参数中的 indexPath 处获取 View 中正在使用的单元格,而是将以前使用过但可重用的单元格出列;如果没有可重复使用的单元格,则创建一个新单元格。参见下面的引用文献 1。
更换:

ProductCollectionViewCell* cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"ProductReuseID" forIndexPath:indexPath];
与:
ProductCollectionViewCell* cell = [collectionView cellForItemAtIndexPath:indexPath];
在上面的代码中,应该为您提供合适的单元格。
这是你的第一个例子,重写。
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath(NSIndexPath *)indexPath
{
// animate the cell user tapped on
UICollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath];
[UIView animateWithDuration:5.0
delay:0
options:(UIViewAnimationOptionAllowUserInteraction)
animations:^{
NSLog(@"animation start");
[cell setBackgroundColor:[UIColor colorWithRed: 180.0/255.0 green: 238.0/255.0 blue:180.0/255.0 alpha: 1.0]];
}
completion:^(BOOL finished){
NSLog(@"animation end");
[cell setBackgroundColor:[UIColor whiteColor]];
}
];
}
引用资料:
  • http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UICollectionView_class/Reference/Reference.html#//apple_ref/occ/cl/UICollectionView
  • 关于ios6 - 点击动画 UICollectionViewCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13154008/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com