2012-03-14 38 views
0

我想制作一个动画,它会改变我已经在应用程序中的一些图片。UIImage视图 - 动画视图逻辑错误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的内部:我怎样才能添加淡入 - 淡出的效果呢?

在此先感谢

回答

2

您必须声明UIImageView *animationView无论是作为一个实例变量或属性。

,因为没有需要重新申报animationViewUIImageView,因为编译器已经知道它,这就是为什么它给你的警告,你可以安全地删除您的viewDidLoadUIImageView *部分。

因此,这将是这样的:

- (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 2012-03-14 22:13:57

+0

我有零exp但是我认为你必须将你的财产从“弱”转变为“强”或其他。至于淡入淡出的动画,你到底想要如何发生? – 2012-03-14 23:36:33

+0

我希望每次出现图像时都会淡入淡出,然后出现下一张图像。 可以说这样的东西*淡入。图像1显示淡出,淡入淡出图像2显示淡出.......这就是我想要它的工作 – Nick 2012-03-15 00:44:37

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

我可以看到它淡入淡出,它只有一次它加载,然后它不会重复它自我,而图像改变时,我做错了什么? – Nick 2012-03-14 22:22:42

+0

谁说过重复的任何事情?...如果你想要更复杂的动画,你应该检查[Core Animation framework](https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/CoreAnimation_guide/Introduction /Introduction.html#//apple_ref/doc/uid/TP40004514) – Alladinian 2012-03-15 08:37:46