2012-03-14 6 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'의 지역 선언이 인스턴스 변수를 숨 깁니다"라는

심지어 코드를 실행하고 내가 원하는 것을 수행합니다. 왜이 오류가 있는지 이해할 수 없습니다. - 페이드 아웃 효과를 내가 fadein을 추가 할 수있는 방법 또한

이 내가 콘센트

그리고 하나 개의 추가 질문으로 선언 한있는 UIImage 내에서 발생주의하는?

미리 감사

답변

2

에 당신은 인스턴스 변수 또는 속성 중 하나로 UIImageView *animationView를 선언해야합니다. 컴파일러는 이미 그것에 대해 알고 그것은 당신에게 경고를주는 이유는 이후 UIImageViewanimationView를 다시 선언 할 필요가 없기 때문에

당신은 안전하게 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

+0

나는 exp가 0이다. ARC와 함께한 경험은 있지만, 재산을 '약한 것'에서 '강한 것'또는 다른 것으로 변경해야한다고 말하고 싶습니다. 페이드 애니메이션과 관련해서는 정확히 어떻게 발생 시키길 원합니 까? –

+0

이미지가 나타나고, 페이드 인하 고, 페이드 아웃 될 때마다 이미지가 나타나고 다음 이미지가 나타납니다. 이 말을 할 수 있습니다. * 페이드 인합니다. 이미지 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