UIImage view - ошибка логики представления анимации xCode 4.2 - PullRequest
0 голосов
/ 15 марта 2012

Я пытаюсь сделать анимацию, которая изменит некоторые изображения, которые у меня уже есть в приложении.

Обыскав вокруг, я нашел кое-что, что очень хорошо работает для меня.

Код ниже:

 - (void)viewDidLoad
{

  [super viewDidLoad];
    UIImageView*animationView = [[UIImageView alloc] initWithFrame:self.view.frame];
    animationView.animationImages = [NSArray arrayWithObjects:   
                                     [UIImage imageNamed:@"photo1.jpg"],
                                     [UIImage imageNamed:@"photo2.jpg"],
                                     [UIImage imageNamed:@"photo3.jpg"], nil];

animationView.animationDuration = 5;
animationView.animationRepeatCount = 0;
[animationView startAnimating];
[self.view addSubview:animationView];
}

Так что даже это прекрасно работает для меня, оно дает мне логическую ошибку (желтый треугольник) и говорит: «Локальное объявление 'animationView' скрывает переменную экземпляра"

Даже несмотря на то, что я запускаю код, и он делает то, что я хочу, я не могу понять, почему у меня есть эта ошибка.

Также отметим, что это происходит внутри UIImage, который я объявил как выход

И еще один вопрос: как я могу добавить эффект исчезновения?

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 15 марта 2012

Вы должны объявить UIImageView *animationView как переменную экземпляра или как свойство.

Вы можете безопасно удалить часть UIImageView * в вашем viewDidLoad, так как нет необходимости повторно объявлять animationView как UIImageView, так как компилятор уже знает об этом и поэтому выдает предупреждение.

Таким образом, это будет выглядеть так:

- (void)viewDidLoad
{
    [super viewDidLoad];
    animationView = [[UIImageView alloc] initWithFrame:self.view.frame];
    animationView.animationImages = [NSArray arrayWithObjects:   
                                     [UIImage imageNamed:@"photo1.jpg"],
                                     [UIImage imageNamed:@"photo2.jpg"],
                                     [UIImage imageNamed:@"photo3.jpg"], nil];

    animationView.animationDuration = 5;
    animationView.animationRepeatCount = 0;
    [animationView startAnimating];
    [self.view addSubview:animationView];
}
0 голосов
/ 15 марта 2012

Что касается эффекта затухания, вы можете сделать что-то вроде:

//Fade in
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
[animationView setAlpha:1];
[UIView commitAnimations];

//Fade out
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
[animationView setAlpha:0];
[UIView commitAnimations];
...