2012-04-28 6 views
1

다음 코드는 간단합니다. _facebookFUIImageView입니다.UIView 애니메이션 블록이 변경되지 않습니다.

if (animationOn == YES) { 
    [UIView animateWithDuration:0.4 animations:^{ 
     [_faceBookF setAlpha:0]; 
    }]; 
    [_faceBookF setImage:[UIImage imageNamed:@"facebookFBlue.png"]]; 
    [UIView animateWithDuration:0.4 animations:^{ 
     [_faceBookF setAlpha:1]; 
    }]; 

    } else { 
    [UIView animateWithDuration:0.4 animations:^{ 
     [_faceBookF setAlpha:0]; 
    }]; 
    [_faceBookF setImage:[UIImage imageNamed:@"facebookF.png"]]; 
     [UIView animateWithDuration:0.4 animations:^{ 
     [_faceBookF setAlpha:1]; 
    }]; 
} 

앱이이 코드를 포함하는 메소드를 가져 오지만 UI 변경 사항은 전체 코드 블록에서 발생하지 않습니다. 내 지식에, 응용 프로그램은 주 스레드에서 실행 중입니다.

추측 하시겠습니까?

업데이트 - 실제로 문제는 이미지가 전혀 변경되지 않고 있다는 것입니다 (애니메이션 유무와 관계 없음). 두 이미지 모두 앱의 다른 부분에서 잘 액세스됩니다.

+0

왜 투표가 실패합니까? –

+0

아마 같은 사람도 아무런 코멘트없이 downvoted. –

+0

코드의이 시점에서 이미지보기가 0이 아닌지 확인할 수 있습니까? – borrrden

답변

0

답장을 보내 주셔서 감사합니다. 두 애니메이션이 동시에 실행되는 것을 피하기 위해 두 블록 모두 완료 블록을 구현했습니다. 그러나 주요 문제는 제대로 액세스되지 않는 방법과 관련되어있었습니다. 변수가 0이 아니고 메소드의 if 및 log 문이 정상적으로 작동하는 이유를 정확히 알 수 없습니다. 어쨌든 NSNotification 솔루션으로 전환 했으므로 메소드의 모든 부분에 액세스하고 있습니다.

2

시도해보십시오. 첫 번째 애니메이션이 완료된 후 두 번째 애니메이션이 시작됩니다. 그래서 UIImageView를 페이드 아웃 한 다음 다른 버전의 이미지로 사라지게됩니다.

[UIView animateWithDuration: 0.4 
        animations:^ 
    { 
     [_faceBookF setAlpha:0]; 
    } 
       completion:^(BOOL finished) 
    { 
     [_faceBookF setImage:[UIImage imageNamed:@"facebookFBlue.png"]]; 
     [UIView animateWithDuration:0.4 
          animations:^ 
      { 
       [_faceBookF setAlpha:1]; 
      }]; 
    }]; 
3

순차적 애니메이션을 실행하려고하는 것처럼 보이지만 코드를 작성한 것처럼 병렬로 실행될 수 있습니다. 당신이해야 할 일은 다음과 같습니다.

if (animationOn == YES) { 
    [UIView animateWithDuration:0.4 animations:^{ 
     [_faceBookF setAlpha:0]; 
    } completion:^(BOOL finished) { 

     [_faceBookF setImage:[UIImage imageNamed:@"facebookFBlue.png"]]; 
     [UIView animateWithDuration:0.4 animations:^{ 
      [_faceBookF setAlpha:1]; 
     }]; 
    }]; 



} 
else { 
    [UIView animateWithDuration:0.4 animations:^{ 
     [_faceBookF setAlpha:0]; 
    }completion:^(BOOL finished) { 

    [_faceBookF setImage:[UIImage imageNamed:@"facebookF.png"]]; 
     [UIView animateWithDuration:0.4 animations:^{ 
     [_faceBookF setAlpha:1]; 
    }]; 
}]; 
} 
+1

빠른 응답을 보내 주셔서 감사합니다. 사실 문제의 근본 원인은 이미지가 변경되지 않는다는 것입니다. 변경할 이미지는 프로젝트 계층 구조 내에 있으며 대상에 연결됩니다. 왜 이럴 수 있니? –

+0

아마도 인터페이스 빌더의 대상이 예상 한 것과 다를 수 있습니다. 펜촉이 올바른 UIViewController에 연결되어 있는지 확인하십시오. –

+0

글쎄, 스토리 보드를 사용하고 있습니다. 또한 문제가있는 동일한 이미지가 앱의 다른 곳에 잘 액세스되어 메모리 문제라고 생각하게됩니다. –

관련 문제