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 ... и каждый раз я просто получаю резкий переход к следующему изображению (это происходит и с текстом)

Кто-нибудь может мне помочь?


person shane    schedule 23.06.2014    source источник


Ответы (1)


Вы не можете таким образом анимировать изменение изображения или текста. Я сделал это вот так,

-(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 = ...

для любого представления изображения, которое является вашим подклассом, и оно будет плавно исчезать при изменении изображений.

person rdelmar    schedule 23.06.2014
comment
спасибо, я не знал, что мне нужно было указать каждое представление, которое я переходил с переходом с представлением - person shane; 23.06.2014