现在已经很晚了,我现在太笨了,无法弄清楚到底是怎么回事。有没有人在这里看到任何明显的错误。
当用户按下它时,我正试图为集合视图单元格的框架设置动画。
来自视图控制器的我的代码。
-(void)collectionView:(UICollectionView *)collectionView didHighlightItemAtIndexPath:(NSIndexPath *)indexPath{
NSLog(@"Highlighted");
[[cells objectAtIndex:indexPath.row] shrinkCell:YES];
}
这是我在单元格内的代码
-(void)shrinkCell:(BOOL)shrink{
NSLog(@"Shrink");
if (shrink) {
[UIView animateWithDuration:1.0
delay:0.5
options: UIViewAnimationOptionCurveEaseIn
animations:^{
self.bg.frame = CGRectOffset(self.bg.frame, 100, 100);
}
completion:nil];
}
}
我正在运行的问题是动画立即完成。它没有延迟和没有持续时间。我无法弄清楚原因。任何人有任何提示或想法?
非常感谢。
答案 0 :(得分:0)
尝试设置center
属性的动画而不是frame
。我的猜测是你的画面出于某种原因不再具有动画效果。
答案 1 :(得分:0)
试试这个,
-(void)collectionView:(UICollectionView *)collectionView didHighlightItemAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"Highlighted");
UICollectionViewCell *animateCell = [collectionView cellForItemAtIndexPath:indexPath];
[self shrinkCell:YES andCell:animateCell];
}
-(void)shrinkCell:(BOOL)shrink andCell:(UICollectionViewCell*)animCell{
NSLog(@"Shrink");
if (shrink) {
[UIView animateWithDuration:1.0
delay:0.5
options: UIViewAnimationOptionCurveEaseIn
animations:^{
animCell.frame = CGRectOffset(animCell.frame, 100, 100);
}
completion:nil];
}
}
答案 2 :(得分:0)
我不知道它是否与它有关,但是,这些细胞来自哪一行呢?
[[cells objectAtIndex:indexPath.row] shrinkCell:YES];
你为什么不用?:
[collectionView cellForItemAtIndexPath:indexPath];
答案 3 :(得分:0)
您的意思是使用:
-(void)collectionView:(UICollectionView *)collectionView didHighlightItemAtIndexPath:(NSIndexPath *)indexPath
而不是:
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath