使用触摸事件控制UIImageview动画流

时间:2013-01-31 17:45:56

标签: cocoa-touch animation uiimageview png

我正在使用UIImageView通过动画.png图像来模拟3D。是否可以使用触摸事件来控制动画的流程?例如,如果我正在模拟一个盒子,我可以用手指向左或向右旋转吗?如果没有,你可以指向另一个方向吗?

1 个答案:

答案 0 :(得分:1)

首先,有两种方法可以做到这一点,艰难的方法是使用核心动画来构建立方体并在滑动或触摸时旋转它,第二种(最简单的)是添加.png序列动画到由UISwipeGestureRecogniser触发的imageView。

首先创建手势识别器,通常只放入ViewDidLoad

 //Implement Swipe Views
UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeLeft)];
swipeRight.numberOfTouchesRequired = 1;
swipeRight.direction = UISwipeGestureRecognizerDirectionLeft;
[_imageView addGestureRecognizer:swipeRight];

然后使用你想要在滑动时播放的动画实现你在@selector(swipeRight)中声明的swipeRight方法......

-(void)swipeRight
{
NSMutableArray *animationArray = [[NSMutableArray alloc] init];

    int animationSizeTwo = 30;

    for (int i=0; i< animationSize; i++) {

        NSString *zeros = @"000";

        if ( i >= 1000 ) {

            zeros = @"";

        }
        else if ( i >= 100 ) {

            zeros = @"0";

        }
        else if ( i >= 10 ) {

            zeros = @"00";
        }
        NSString *animationNameTwo = [NSString stringWithFormat:@"(imageName)"];

        NSString *imageName = [NSString stringWithFormat:@"%@%@%d.png", animationNameTwo, zeros, i];

        [animationArrayTwo addObject:[UIImage imageNamed:imageName]];


    }

    _imageView.animationImages = animationArray;
    _imageView.animationDuration = 1;
    _imageView.animationRepeatCount = 1;
    _imageView.image = [_imageView.animationImages lastObject];
    [_imageView startAnimating];

}

现在每当你向右滑动动画火时。您可以复制并粘贴UIGestureRecogniser代码并更改所有方法,以便您可以双向触发..当您实现swipeLeft时,只需将动画序列计数更改为:

int animationSizeTwo = 0;

    for (int i=30; i> animationSize; i--) {

这会反过来旋转你的动画。

希望这有帮助,让我知道你是怎么过的! T