我有UIView,在它的顶部我有一个UIImageView,在底部的UICollectionView中。我的观点是,当用户向上滑动手指时,UIImageView框架应该轻轻移出(消失),当用户向下滑动时,它应该再次出现(移动动画)。
实际上,直到我将图像设置为UIImageView才有效。旧代码(如下所示)可以正常工作:
-(void)handleSwipeDown:(UISwipeGestureRecognizer *)recognizer {
NSLog(@"Swipe received.");
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
self.myCollectionView.frame = CGRectMake(0, 152, 320, 480);
[UIView commitAnimations];
}
然后:
-(void)handleSwipeFrom:(UISwipeGestureRecognizer *)recognizer {
NSLog(@"Swipe received.");
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
self.myCollectionView.frame=CGRectMake(0, 0, 320, 480);
[UIView commitAnimations];
}
我设置图片后:
UIImage *firstImage = [UIImage imageNamed:@"ipd1.jpg"];
self.imageSlideshow.image = firstImage;
以上代码停止工作。 UIImage框架停留在同一个地方。 我怎么能让它移动? 任何建议都将不胜感激,谢谢!
答案 0 :(得分:2)
您应该停止使用beginAnimations:context:
和commitAnimations
块。来自Apple的文档:
在iOS 4.0及更高版本中不鼓励使用此方法。您应该使用基于块的动画方法来指定动画。
请改用:
[UIView animateWithDuration:0.5 animations:^{
self.myCollectionView.frame = CGRectMake(0, 152, 320, 480);
}];
只需用上面的方法替换整个swipeDown方法。