У меня есть анимация, которую я добавляю в представление. В анимации у меня есть ячейка, которая сворачивается, как будто ее сворачивают. Я разделяю вид на два отдельных слоя и применяю поворот к каждому слою. Это работает, однако эффект более тонкий, чем хотелось бы. Я ищу способ увеличить зазор между концами центральной линии (верхним и нижним краями каждого слоя) во время анимации. По сути, половинки недостаточно высоки, чтобы убедительно выглядеть так, как будто они складываются назад. Вот то, что у меня сейчас есть в середине анимации, оранжевые линии примерно там, где я хотел бы, чтобы линии попадали во время анимации:
Вот код, обрабатывающий вращение:
- (CABasicAnimation *)foldLayerToValue:(CGFloat)toValue expanding:(BOOL)expanding
{
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform"];
CATransform3D rotate = CATransform3DIdentity;
rotate.m34 = 1.0 / -2000.f;
rotate = CATransform3DRotate(rotateAndScale, [self radiansFromDegrees:toValue], 1.f, 0.f, 0.f);
animation.toValue = [NSValue valueWithCATransform3D:rotateAndScale];
return animation;
}
Это добавляется в CATransaction, который также перемещает нижнюю часть вниз на правильную величину во время анимации. Я попытался добавить коэффициент масштабирования к анимации, но это повлияло на весь слой, масштабируя как верхний, так и нижний края. Я попытался увеличить высоту слоев по мере их вращения, но это также дало неприятные результаты.
Любые идеи? Есть ли способ вручную установить положение по углу за углом?
Я думаю, что часть проблемы в том, что мои опорные точки находятся на центральной линии. Во время вращения верхний и нижний края приближаются к точке обзора, а не центральная линия удаляется. Вы можете видеть, что углы немного выходят за пределы экрана, что ограничивает количество видимого эффекта. Ранее у меня была версия с опорными точками в верхней и нижней части слоев, но мне не удалось заставить два слоя оставаться «соприкасающимися» во время анимации. Я пытался добавить перевод к координате Z во время анимации, но, похоже, это ни на что не повлияло.
m34
? Он определяет количество применяемой перспективы. - person guardabrazo   schedule 21.06.2014