Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UIView的真实3d旋转动画_Iphone_Ios_Objective C_Xcode_Core Animation - Fatal编程技术网

Iphone UIView的真实3d旋转动画

Iphone UIView的真实3d旋转动画,iphone,ios,objective-c,xcode,core-animation,Iphone,Ios,Objective C,Xcode,Core Animation,我正试图找到一种方法来制作UIView的3D旋转动画。我想它看起来像推通知动画,如果你选择“横幅”风格。我试着用类似的东西 CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"transform"]; CATransform3D t = CATransform3DIdentity; t = CATransform3DTranslate(t, 0, -self.bounds.size.height/2, 0); t =

我正试图找到一种方法来制作UIView的3D旋转动画。我想它看起来像推通知动画,如果你选择“横幅”风格。我试着用类似的东西

CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"transform"];
CATransform3D t = CATransform3DIdentity;
t = CATransform3DTranslate(t, 0, -self.bounds.size.height/2, 0);
t = CATransform3DRotate(t, M_PI_2, 1, 0, 0);
t = CATransform3DTranslate(t, 0, -self.bounds.size.height/2, 0);
[anim setFromValue:[NSValue valueWithCATransform3D:CATransform3DIdentity]];
[anim setToValue:[NSValue valueWithCATransform3D:t]];
anim.removedOnCompletion = NO;
[anim setDuration:0.25];
anim.fillMode = kCAFillModeForwards;
anim.delegate = self;
[self.layer addAnimation:anim forKey:@"Rotation"];

但这看起来很平淡,不像推送通知的横幅那样逼真。如何使此动画更逼真?

您可能需要深入了解其实现方式


此外,还有不同类型的CALayer,您可能希望从动画视图的
+(Class)layerClass
中选择所需的CALayer。在我看来,你坚持使用普通的CALayer。

现实主义的主要部分是你缺少透视图。设置
t.m34=-1.0/500.0在开始转换之前(您可以在文章末尾阅读原因)。除此之外,动画“平移-旋转-平移”将在一条直线上进行(你可以看到我在说什么)