меняйте фоновое изображение каждую секунду - PullRequest
1 голос
/ 26 июля 2011

У меня есть два изображения: «back1» и «back2», я хочу поместить «back1» на фон, а затем через 2 секунды изменить его на «back2» с эффектом затухания, а затем изменить «back2» на « back1 "с эффектом затухания снова и снова каждые две секунды. Как я могу сделать это, пожалуйста? Я думаю, что я должен использовать CATransition или что-то подобное. извините за мой английский я французский: /

Ответы [ 3 ]

5 голосов
/ 20 сентября 2012

Использование переменной static помогает в цикле:

- (void)viewDidLoad{

    myImages=[NSArray arrayWithObjects:@"bck2.png",@"bck3.jpg",@"bck1.jpg",nil];

    updateBCK = [NSTimer scheduledTimerWithTimeInterval:(3600.0) target:self selector:@selector(changeImage) userInfo:nil repeats:YES];


    [updateBCK fire];

    [super viewDidLoad];

}

После добавления вышеуказанного кода в viewdidload определите действие:

-(void)changeImage{

    //background.alpha=0.5;
    static int i=0;

    if (i == [myImages count]){
        i=0;
    }

    [UIImageView beginAnimations:nil context:NULL];
    [UIImageView setAnimationDuration:0.6];
    background.alpha=1;
    background.image =[UIImage imageNamed:[myImages objectAtIndex:i]];
    [UIImageView commitAnimations];
    i++;

}
2 голосов
/ 26 июля 2011

На iOS 4 и выше вы можете использовать блок анимации - это очень быстро и дает более чистый интерфейс.См. UIView - animateWithDuration

2 голосов
/ 26 июля 2011

U может достичь этого с помощью NSTimer.Вызовите метод через NSTimer, который устанавливает BG-образ вашего приложения через равные промежутки времени.Надеюсь, это поможет.

[super viewDidLoad];
UIView *mainView=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 480)];
mainView.backgroundColor=[UIColor blackColor];
self.view=mainView;
[mainView release];
randomView=[[UIImageView alloc]initWithFrame:CGRectMake(30, 100, 100, 100)];
randomView.backgroundColor=[UIColor darkGrayColor];
[mainView addSubview:randomView];
[randomView release];
myImages=[[NSArray arrayWithObjects:@"arrow.jpeg",@"default.jpeg",@"user.jpeg",@"home.jpeg", nil]retain];
timer = [NSTimer scheduledTimerWithTimeInterval:(2.0) target:self selector:@selector(changeImage) userInfo:nil repeats:YES];
[timer fire];
NSLog(@"%@",myImages);

Добавьте указанный выше код в метод viewDidLoad.

-(void)changeImage{
randomView.alpha=0.5;
if(i>3){
   i=0;
    [UIImageView beginAnimations:nil context:NULL];
    [UIImageView setAnimationDuration:0.6];
    randomView.alpha=1;
    randomView.image =[UIImage imageNamed:[myImages objectAtIndex:i]];
    [UIImageView commitAnimations];
    i+=1;}
else{
    [UIImageView beginAnimations:nil context:NULL];
    [UIImageView setAnimationDuration:0.6];
    randomView.alpha=1;
    randomView.image =[UIImage imageNamed:[myImages objectAtIndex:i]];
    [UIImageView commitAnimations];
    i+=1;}

Добавьте указанный выше код в определенный пользователем метод с именем - (void) changeImage

...