Да, CATransform3DMakeRotation()
создаст совершенно новое преобразование, которое перезапишет существующее. Если вы хотите изменить существующее преобразование, вы должны использовать CATransform3DRotate()
. Например, вы можете изменить ваш второй пример кода со строками
CATransform3D existingTransform = [[KuvertLasche layer] transform];
topAnim.fromValue = [NSValue valueWithCATransform3D:existingTransform];
float f = DegreesToRadians(180); // -M_PI/1;
topAnim.toValue=[NSValue valueWithCATransform3D:CATransform3DRotate(existingTransform, f, 0,1, 0)];
Обратите внимание, что если одна анимация должна выполняться за другой, вам нужно будет использовать обратные вызовы делегата для запуска второго после завершения первого. Анимации выполняются в фоновом потоке, поэтому если обе ваши анимации, определенные выше, запускаются одна за другой, результаты могут быть беспорядочными.