#ios #objective-c #xcode #objective-c-blocks #uianimation
#iOS #objective-c #xcode #цель-c-блоки #uianimation
Вопрос:
Я выполняю переход изображения с использованием анимационного блока, подобного этому
[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];
}];
Я не понимаю, почему у меня нет перехода fade, я пробовал несколько разных UIAnimationOptionTransition… и каждый раз, когда я просто получаю резкий переход к следующему изображению (это происходит и с текстом)
Может кто-нибудь мне помочь?
Ответ №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 = ...
для любого вида изображения, который является вашим подклассом, и он будет пересекать затухание изображений при их изменении.
Комментарии:
1. спасибо, я не знал, что мне нужно было указывать каждое представление, которое я переходил с помощью «переход с помощью view»