以编程方式移动UIImageView框架

时间:2014-09-28 08:00:26

标签: ios objective-c uiimageview

我有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框架停留在同一个地方。 我怎么能让它移动? 任何建议都将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:2)

您应该停止使用beginAnimations:context:commitAnimations块。来自Apple的文档:

  

在iOS 4.0及更高版本中不鼓励使用此方法。您应该使用基于块的动画方法来指定动画。

请改用:

[UIView animateWithDuration:0.5 animations:^{
    self.myCollectionView.frame = CGRectMake(0, 152, 320, 480);
}];

只需用上面的方法替换整个swipeDown方法。