2013-04-27 73 views
0

我正在尝试逐帧更改UIImageView的图像帧,我有几个下图应该通过按钮进行更改。这里是我的代码:iOS - 逐帧更改图像

- (IBAction)next:(id)sender { 

    for(i = 0; i <= 31; i++) { 
     NSString* filename = [NSString stringWithFormat:@"pic%d.jpeg",i]; 
       _image.image = [UIImage imageNamed:filename]; 
    } 

} 

的问题是我的代码更改图像只有第一帧,当我点击按钮

+0

该辊通过** **所有为每个按钮点击的意见。如果您想在每次点击按钮时逐一显示图像,请取出循环。写'i =(i + 1)%31'来增加变量。 – 2013-04-27 09:34:04

回答

1

,因为你的变量i的值始终为0

尝试此解决方案:

在.h文件中

int imgCount; 

初始创建的实例变量丽泽它在viewDidLoad方法

imgCount = 0; 
NSString* filename = [NSString stringWithFormat:@"pic%d.jpeg",imgCount]; // img0 is displayed 
_image.image = [UIImage imageNamed:filename]; 


- (IBAction)next:(id)sender { 
    //first (by default) img0 is display 
    imgCount++; 

    if (imgCount > 30) { //suppose total image is 31 means 0 to 30 
     imgCount = 0; 
    } 
    NSString* filename = [NSString stringWithFormat:@"pic%d.jpeg",imgCount]; 
    _image.image = [UIImage imageNamed:filename]; 
} 

- (IBAction)previous:(id)sender { 
    imgCount--; 

    if (imgCount < 0) { //suppose total image is 31 means 0 to 30 
     imgCount = 30; 
    } 
    NSString* filename = [NSString stringWithFormat:@"pic%d.jpeg",imgCount]; 
    _image.image = [UIImage imageNamed:filename]; 
} 
+0

谢谢,有一个问题,怎么能这样做到最后一帧到第一帧?我知道我必须使用:'imgCount - ;'但是当按下一个按钮时这个工作 – Momi 2013-04-27 10:18:54

+0

看到我编辑的答案 – DharaParekh 2013-04-27 10:22:53

+0

我添加了那段代码,但是为了计算回来,代码在按下一个按钮时工作 – Momi 2013-04-27 10:31:09

0
// create the view that will execute our animation 
    UIImageView* campFireView = [[UIImageView alloc] initWithFrame:self.view.frame]; 

    // load all the frames of our animation 
    campFireView.animationImages = [NSArray arrayWithObjects: 
           [UIImage imageNamed:@"campFire01.gif"], 
           [UIImage imageNamed:@"campFire02.gif"], 
           [UIImage imageNamed:@"campFire03.gif"], 
           [UIImage imageNamed:@"campFire04.gif"], 
           [UIImage imageNamed:@"campFire05.gif"], 
           [UIImage imageNamed:@"campFire06.gif"], 
           [UIImage imageNamed:@"campFire07.gif"], 
           [UIImage imageNamed:@"campFire08.gif"], 
           [UIImage imageNamed:@"campFire09.gif"], 
           [UIImage imageNamed:@"campFire10.gif"], 
           [UIImage imageNamed:@"campFire11.gif"], 
           [UIImage imageNamed:@"campFire12.gif"], 
           [UIImage imageNamed:@"campFire13.gif"], 
           [UIImage imageNamed:@"campFire14.gif"], 
           [UIImage imageNamed:@"campFire15.gif"], 
           [UIImage imageNamed:@"campFire16.gif"], 
           [UIImage imageNamed:@"campFire17.gif"], nil]; 

    // all frames will execute in 1.75 seconds 
    campFireView.animationDuration = 1.75; 
    // repeat the annimation forever 
    campFireView.animationRepeatCount = 0; 
    // start animating 
    [campFireView startAnimating]; 
    // add the animation view to the main window 
    [self.view addSubview:campFireView]; 

另外下载源code form here.

+2

Aww,那个数组...... – 2013-04-27 09:53:56