Хорошо, это не будет полным решением, но я укажу некоторые вещи, которые могут быть полезны.Я не гуру Core-Animation, но я сделал несколько вращений 3D в моей программе.
Во-первых, нет никакого «возврата» к виду.Поэтому, если вы повернете что-то на M_PI (180 градусов), вы будете смотреть на этот вид как бы сзади (именно поэтому он перевернут / зеркально отражен).
Я не уверен, что вы подразумеваете под:
Анимируется только половина карты по оси X.
Но этоэто может помочь рассмотреть вашу опорную точку (точку, в которой происходит вращение).Обычно это в центре, но часто вам нужно, чтобы было иначе.Обратите внимание, что точки привязки выражены в виде пропорции (в процентах / 100) ... поэтому значения равны 0 - 1,0f.Вам нужно установить его только один раз (если вам не нужно его менять).Вот как вы получаете доступ к узловой точке:
1012 *
layer.anchorPoint = CGPointMake(0.5f, 0.5f) //This is center
1015 * Причина анимация только когда выполняется один раз, потому что преобразования являются абсолютными, не суммируется.Учтите, что вы всегда начинаете с преобразования идентификаторов, а затем модифицируете его, и это будет иметь смысл ... но, по сути, анимация не происходит, потому что во второй раз анимировать нечего (представление уже находится в состоянии, в котором вы находитесьс просьбой быть в).
Если вы анимируете от одного вида к другому (и вы не можете использовать [UIView transitionWithView:duration:options:animations:completion:];
), вам придется использовать двухэтапную анимацию.На первом этапе анимации для «карты», которая переворачивается на обратную сторону, вы поворачиваете «исчезающий» вверх / вниз / куда угодно «M_PI_2» (в этот момент он «исчезнет»,или не видно, из-за его вращения).И на втором этапе вы поворачиваете заднюю сторону вида, чтобы исчезнуть в 0 (который должен быть преобразованием идентичности ... иначе нормальное состояние представления).Кроме того, вы должны сделать прямо противоположное для «карты», которая появляется (передняя сторона).Вы можете сделать это, внедрив еще один [UIView animateWithDuration:...]
в блоке завершения первого.Я предупрежу вас, хотя, сделать это может быть немного сложнее.Тем более, что вы хотите, чтобы у видов была «задняя сторона», что в основном потребует анимации четырех видов (вид, который исчезает, вид, который должен появиться, задняя сторона, чтобы исчезнуть, и задняя сторона -от вида к печати).Наконец, в блоке завершения второй анимации вы можете выполнить некоторую очистку (сбросить представление, которое вращается и делает его альфа 0.0f и т. Д.).
Я знаю, что это сложно, так что вы можете захотетьПрочитайте учебник по Core-Animation.