Как я могу использовать UISlider для циклического перемещения по последовательности изображений UIImageView для создания анимированного эффекта - PullRequest
0 голосов
/ 16 июня 2011

Для приложения, над которым я сейчас работаю, я пытаюсь взять серию изображений и связать их с UISlider. Взаимодействие со слайдером создаст анимированный эффект, циклически перемещаясь по кадрам. Мне удалось создать отдельную анимацию из серии изображений, однако я не слишком уверен в том, как добавить UISlider и сделать соответствующие ссылки для достижения желаемого эффекта.

Вот что у меня есть ...

- (void) viewDidLoad{

// --- Массив анимированных изображений ---- / *

NSArray *images = [NSArray arrayWithObjects:
                   [UIImage imageNamed:@"frame1.png"],
                   [UIImage imageNamed:@"frame2.png"],
                   [UIImage imageNamed:@"frame3.png"],
                   [UIImage imageNamed:@"frame4.png"],
                   [UIImage imageNamed:@"frame5.png"],
                   [UIImage imageNamed:@"frame6.png"],
                   [UIImage imageNamed:@"frame7.png"],
                   [UIImage imageNamed:@"frame8.png"],
                   [UIImage imageNamed:@"frame9.png"],
                   [UIImage imageNamed:@"frame10.png"],
                   nil];

CGRect frame = CGRectMake(0,44,703,704); 
UIImageView *imageView = [[UIImageView alloc] initWithFrame:frame]; 
imageView.animationImages = images; 
imageView.contentMode = UIViewContentModeScaleAspectFit;


imageView.animationDuration = 4;
imageView.animationRepeatCount = 0;
[imageView startAnimating];

[UIView setAnimationTransition:UIViewAnimationTransitionNone forView:imageView cache:YES];
[self.view addSubview:imageView];


[imageView release];
[super viewDidLoad];

Есть какие-нибудь подсказки?

1 Ответ

1 голос
/ 16 июня 2011

Я не думаю, что вы можете заставить UISlider объект работать со animationImages свойством UIImageView. Однако вы можете сохранить массив UIImage s, а затем установить свойство image объекта UIImageView. Для этого вам нужно будет установить действие для события UIControlEventValueChanged. Установите максимальное значение ползунка равным количеству изображений, т.е. [imageArray count], а затем обновите изображение на основе текущего значения ползунка.

- (void)valueChanged:(UISlider *)slider {
    NSInteger currentImageIndex = lroundf(slider.value);
    imageView.image = [imageArray objectAtIndex:currentImageIndex];

    [slider setValue:roundf(slider.value) animated:YES];
}
...