如何在3D中旋转UIView?

时间:2015-05-06 13:53:22

标签: ios uiview transform catransform3d catransform3drotate

我的任务非常简单,但我无法理解CATransform3DRotate。 我有3个UIImageView具有相同的高度和宽度,我需要为左侧和右侧项目设置一些转换以获得下一个结果: https://dl.dropboxusercontent.com/u/15196617/result.png

原始屏幕: https://dl.dropboxusercontent.com/u/15196617/original.png

我的消息来源:

CATransform3D transform = CATransform3DIdentity;
transform.m34 = -1.f / self.prevItemImageView.bounds.size.width;
transform = CATransform3DRotate(transform, (CGFloat) -(M_PI / 3.f), 0, 1.f, 0);
self.prevItemImageView.layer.anchorPoint = CGPointMake(1.f, 0.5f);
self.prevItemImageView.layer.transform = transform;

transform = CATransform3DIdentity;
transform.m34 = -1.f / self.nextItemImageView.bounds.size.width;
transform = CATransform3DRotate(transform, (CGFloat) (M_PI / 3.f), 0, 0.5f, 0);
self.nextItemImageView.layer.anchorPoint = CGPointMake(0.f, 0.5f);
self.nextItemImageView.layer.transform = transform;

这不起作用。

2 个答案:

答案 0 :(得分:3)

您要做的是将带有已更改.m34组件的转换应用于图像视图的超级层,作为sublayerTransform。这就是为图像视图提供变换的深度外观。

这张照片以广场的形式开始。但它看起来在3D中旋转,因为它的超级层有一个sublayerTransform

enter image description here

答案 1 :(得分:0)

我为这种类型的动画找到了一个解决方案。请查看此链接

https://github.com/GlennChiu/GC3DFlipTransitionStyleSegue

我们可以使用Pods添加..

如果有效,请接受答案。