2012-03-14 1 views
0

Я пытаюсь сделать анимацию, что она изменит некоторые фотографии, которые у меня уже есть в приложении.UIImage view - логическая ошибка просмотра анимации xCode 4.2

После поиска я нашел что-то, что работает очень хорошо для меня.

код ниже:

- (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, что я объявлен как отдушина

И один дополнительный вопрос: Как я могу добавить FadeIn - эффект затухания?

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

ответ

2

Вы должны быть объявлены 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

это сделало работу и решить все логические ошибки с «локальной декларацией«animationView «скрывает переменную экземпляра», после чего появилась новая логическая ошибка «Приобретение сохраненного объекта для слабой переменной; объект будет выпущен после назначения». Спасибо за вашу помощь, теперь он вообще не работает, он показывает белый экран на симуляторе вместо того, чтобы иметь изменение фото – Nick

+0

У меня есть zero exp с ARC, но я бы сказал, что вам нужно изменить свою собственность от «слабого» до «сильного» или чего-то еще. Что касается анимации затухания, как именно вы хотите, чтобы это произошло? –

+0

Я хочу его каждый раз, когда появляется изображение, исчезает, а затем исчезает, и появляются следующие изображения. позволяет сказать что-то вроде этого * fade in. Image 1 появляется, исчезает, исчезает на изображении 2 появляется исчезает ....... вот как я хочу, чтобы он работал – Nick

0

Как для замирания эффекта вы могли бы сделать что-то вроде:

//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]; 
+0

tho, я вижу, что он исчезает в - исчезает, он делает это только один раз, когда он загружается, а затем он не повторяет его сам, пока меняются изображения, что я делаю неправильно? – Nick

+0

Кто сказал что-нибудь о повторении? ... Если вам нужны более сложные анимации, вы должны действительно проверить [Core Animation framework] (https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/CoreAnimation_guide/Introduction /Introduction.html#//apple_ref/doc/uid/TP40004514) – Alladinian

Смежные вопросы