2014-06-23 3 views
0

가 나는 페이드 전환이없는 이유를 이해하지 못하는이있는 UIImage가

[UIView animateWithDuration:1.0f delay:0.0f options:UIViewAnimationOptionTransitionCrossDissolve animations:^{ 
    self.songTitleLabel.text = currentSong.songTitle; 
    self.artistNameLabel.text = currentSong.songArtist; 
    self.songImageView.image = currentSong.songArtwork; 
}completion:^(BOOL finished){ 
    self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:currentSong.songLocation error:nil]; 
    [self.player setVolume:1.0]; 
    [self.player play]; 
}]; 

같은 애니메이션 블록을 사용하여 이미지 전환을하고있는 중이 애니메이션 블록 전환과 페이드를 사용하여 전환되지 않으며, 나는 시도 몇 가지 다른 UIAnimationOptionTransition ... 그리고 매번 나는 다음 이미지로 갑작스러운 점프를 얻습니다. (이것은 텍스트에서도 발생합니다)

누군가 나를 도울 수 있습니까?

답변

2

그런 식으로 이미지 또는 텍스트의 변경 사항을 애니메이션으로 만들 수 없습니다. 나는

-(IBAction)doStuff:(id)sender { 

    [UIView transitionWithView:self.imageView 
         duration:1.0 
         options:UIViewAnimationOptionTransitionCrossDissolve 
        animations:^{ 
         [self.imageView setImage:[UIImage imageNamed:@"IMG_0081.JPG"]]; 
        } completion:nil]; 

    [UIView transitionWithView:self.label2 
         duration:1.0 
         options:UIViewAnimationOptionTransitionCrossDissolve 
        animations:^{ 
         [self.label2 setText:@"New Text"]; 
        } completion:nil]; 
} 

하면,의 setText를 서브 클래스를 생성하고, 대체 할 더 좋을 수도 여러 레이블 또는 이미지 뷰를 변경하는 경우, 이런 식으로 일을했습니다와 setImage :. 예를 들어, setImage이 같은 :, 서브 클래스의 모든 이미지 뷰

-(void)setImage:(UIImage *)image { 
    [UIView transitionWithView:self 
         duration:1.0 
         options:UIViewAnimationOptionTransitionCrossDissolve 
        animations:^{ 
         [super setImage:image]; 
        } completion:nil]; 
} 

그런 다음 바로 사용할 수

self.imageView.image = ... 

을, 당신이 그들을 변경할 때이 이미지를 퇴색 교차합니다.

+0

덕분에 나는 내가보기에 전환하는 각보기를 지정해야한다는 것을 몰랐습니다. – shane

관련 문제