如何在旋转90度后将图像添加到CALayer的背面?

3
当我的旋转变换角度大于90度时,我想向CALayer添加一个背景图像。就像Flipboard翻转动画一样。
这是我的当前代码:
 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
据我所知,最简单的方法是添加两个子层,分别代表页面的正面和背面。将两个子层的doubleSided属性都设置为NO。将背面图层变换设置为您正在动画翻转的相同变换。然后,当页面的正面面向观众时,正面图层可见,背面图层“隐藏”,反之亦然。
请参见GeekGameBoard源代码(Card.m)了解该技术的示例。

谢谢你的提示。我最终同时对两个图层进行了动画处理,当度数高于90时,后面的图层会自动移到前面。我没有触碰doubleSided属性。还是非常感谢你。 - nonamelive

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接