【发布时间】:2012-01-07 10:03:57
【问题描述】:
我在使用 CATransform3DMakeRotation 时遇到了一个奇怪的问题。当旋转后的视图位于父视图的中心时,它看起来像这样:
这就是它应该的样子。但是,当它位于 superview 的其他位置时,比如在左下角,它看起来像这样:
请注意,它向右倾斜。当它在右下角时也会发生同样的事情,只是它向左倾斜。有没有办法让它在任何时候和每个位置都以它应该的方式倾斜?实现这种变换的代码如下:
CALayer *layer = view.layer;
CATransform3D aTransform = CATransform3DIdentity;
float zDistance = 1000;
aTransform.m34 = 1.0 / -zDistance;
self.view.layer.sublayerTransform = aTransform;
CABasicAnimation *rotateAnim = [CABasicAnimation animationWithKeyPath:@"transform"];
rotateAnim.fromValue= [NSValue valueWithCATransform3D:CATransform3DMakeRotation(0, 0, 0, 0)];
rotateAnim.duration=0.12;
rotateAnim.toValue=[NSValue valueWithCATransform3D:CATransform3DMakeRotation(20*M_PI/180, 1, 0, 0)];
rotateAnim.removedOnCompletion = NO;
rotateAnim.fillMode = kCAFillModeForwards;
[layer addAnimation:rotateAnim forKey:@"rotateAnim"];
【问题讨论】:
-
您可能没有正确构建 CATransform3D,很可能是因为忘记了平移和旋转相互影响。发布用于生成转换的代码。
标签: iphone objective-c transform rotation perspective