Мое предложение состояло бы в том, чтобы просто использовать два UIImageView
друг над другом. На верхнем изображении находится изображение1, а на нижнем - изображение2:
- (void) crossfade {
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:.5];
imageView1.alpha = !imageView1.alpha;
[UIView commitAnimations];
}
Это будет исчезать между двумя изображениями, когда вы его называете. Если вы хотите просто сделать одно затухание и удалить первое изображение после того, как закончите:
- (void) crossfade {
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:.5];
[UIView setAnimationDelegate:imageView1];
[UIView setAnimationDidStopSelector:@selector(removeFromSuperview)];
imageView1.alpha = 0
[UIView commitAnimations];
}
Edit:
Если вы ищете причину, по которой ваш код не работает, это потому, что вы просто устанавливаете свойство для нового изображения, а затем добавляете бесполезную анимацию. CABasicAnimation
имеет fromValue
и toValue
, которые необходимо установить, затем добавьте эту анимацию в слой, и она должна выполнить анимацию. Не устанавливайте содержимое вручную.