Заморозить последний кадр анимации изображения xcode - PullRequest
0 голосов
/ 27 августа 2011

Я пытаюсь решить проблему в течение нескольких недель, но не могу найти ответ. Я пытаюсь сделать так, чтобы последний кадр зависал по окончании анимации.

Это мой код анимации:

 -(IBAction)play {
    image.animationImages = [NSArray arrayWithObjects:
                             [UIImage imageNamed:@"1.png"],
                             [UIImage imageNamed:@"2.png"], 
                             [UIImage imageNamed:@"3.png"], 
                             [UIImage imageNamed:@"4.png"], 
                             [UIImage imageNamed:@"5.png"], 
                             [UIImage imageNamed:@"6.png"], 
                             [UIImage imageNamed:@"7.png"], 
                             [UIImage imageNamed:@"8.png"], 
                             [UIImage imageNamed:@"9.png"], 
                             [UIImage imageNamed:@"10.png"], 
                             [UIImage imageNamed:@"11.png"], 
                             [UIImage imageNamed:@"12.png"], 
                             [UIImage imageNamed:@"13.png"],nil];
    
    [image setAnimationRepeatCount: 1];
    image.animationDuration = 0.5;
    
    [image startAnimating];

    
}

-(IBAction)stop{
   [image stopAnimating];
}

Когда я нажимаю кнопку воспроизведения, анимация запускается, а когда я нажимаю кнопку остановки, анимация останавливается и исчезает изображение.

Мне нравится делать это без кнопки остановки, когда анимация заканчивается, виден последний кадр.

Спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 12 октября 2012

Что если вы просто сделаете:

-(IBAction)stop {
     [image stopAnimating];
     image.image = [image.animationImages objectAtIndex:12]; //or 0 to jump to the first image
}

работал для меня:)

0 голосов
/ 27 августа 2011

Не знаю, проще ли это сделать, но это работает. Вот вы:

- (IBAction)stop {
    CGSize screenSize = [[UIScreen mainScreen] applicationFrame].size;
    CGContextRef context = CGBitmapContextCreate(nil, screenSize.width, screenSize.height, 8, 4 * (int)screenSize.width, CGColorSpaceCreateDeviceRGB(), kCGImageAlphaPremultipliedLast);

    CGBitmapContextCreateImage(context);
    CGContextTranslateCTM(context, 0.0, screenSize.height);
    CGContextScaleCTM(context, 1.0, -1.0);

    [(CALayer*)self.layer renderInContext:context];

    CGImageRef cgImage = CGBitmapContextCreateImage(context);
    UIImage *lastFrame = [[UIImage alloc] initWithCGImage:cgImage];
    CGImageRelease(cgImage);
    CGContextRelease(context);

    image.image = lastFrame;
    [lastFrame release];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...