Как добавить изображение на заднюю часть CALayer после поворота на 90 градусов? - PullRequest
3 голосов
/ 20 декабря 2010

Я хочу добавить заднее изображение в CALayer, когда степень моего поворота превосходит 90.

Это как анимация флипборда.

Это мой текущий код:

 CALayer *layer = self.view.layer;

 int frames = 130;

 layer.anchorPoint = CGPointMake(0, 0.5);

 CATransform3D transform = CATransform3DIdentity;
 transform.m34 = 1.0 / -2000.0;
 transform = CATransform3DRotate(transform, -frames * M_PI / 180.0, 0.0, 1.0, 0.0);

 self.view.layer.transform = transform;

 CAKeyframeAnimation *pivot = [CAKeyframeAnimation animationWithKeyPath:@"transform"];

 NSMutableArray *values = [[NSMutableArray alloc] initWithCapacity:45];
 NSMutableArray *times = [[NSMutableArray alloc] initWithCapacity:45];

 for (int i = 0; i < frames; i++) {

  CATransform3D transform = CATransform3DIdentity;
  transform.m34 = 1.0 / -2000.0;
  transform = CATransform3DRotate(transform, -M_PI / 180.0 * i, 0.0, 1.0, 0.0);

  [values addObject:[NSValue valueWithCATransform3D:transform]];
  [times addObject:[NSNumber numberWithFloat:(float)i / (frames - 1)]];
 }

 pivot.values = values;
 pivot.keyTimes = times;

 [values release];
 [times release];

 pivot.duration = 0.5f;
 pivot.calculationMode = kCAAnimationLinear;

 [layer addAnimation: pivot forKey: @"pivot"];

Может ли кто-нибудь сказать мне, как добавить изображение назад, как эффект флип.

alt text

1 Ответ

4 голосов
/ 20 декабря 2010

Насколько я знаю, самый простой способ сделать это - добавить два подслоя, представляющих лицевую и тыльную стороны страницы. Установите для обоих свойств подслоев doubleSided значение NO. Установите обратное преобразование слоя на то же перевернутое преобразование, к которому вы анимируете. Затем, когда передняя сторона страницы обращена к зрителю, передний боковой слой виден, а задний - «скрыт», и наоборот.

См. GeekGameBoard исходный код (Card.m) для образца техники.

...