草庐IT

CATransform3DMakeRotation

全部标签

iphone - 使用 CATransform3DMakeRotation 时没有透视

我正在尝试使用CATransform3DMakeRotation在UIView层上执行3D旋转。我很困惑为什么这个简单的例子没有显示透视图,而是看起来被压扁了。使用CATransform3DRotate时我可以让旋转工作,但我不想旋转,我想旋转到。谢谢。-(BOOL)application:(UIApplication*)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions{self.window=[[UIWindowalloc]initWithFrame:[[UIScreenmainScreen]b

ios - UIViewController 在 CATransform3D 动画之后不响应触摸

我的“库”样式UIViewController执行CATransform3D旋转动画,角度为1.75弧度,以便在推送(没有动画)到下一个或最后一个View之前隐藏它。不幸的是,在弹出UIViewController时执行动画时,弹出的VC不会响应触摸。我尝试过的事情:-为了让动画在弹出后显示,而不是让它完全不动画,我必须将它延迟0.1秒。为此,我使用NSObject的performSelector:withObject:afterDelay。不幸的是,这虽然完美地执行了预期的动画,但导致了我的名字问题。使用NSTimer在0.1秒后不重复地执行操作。这没有任何作用。在动画的时候使用UI

ios - 设置图层的 zPosition 与通过 CATransform3DTranslate 更改它有什么区别

我有一个图层,我正在修改它的m34变换属性以获得透视图。我原以为通过更改zPosition,大小会发生变化(因为它看起来更远)但是当我设置zPosition属性时,大小不会改变,但是当我使用CATransform3DTranslate时它会发生变化。这是为什么?以下内容有什么区别:CATransform3Dtransform=CATransform3DIdentity;transform.m34=1.0/-4000;myLayer.transform=transform;myLayer.zPosition=-500;和CATransform3Dtransform=CATransform

ios - 了解 CATransform3D 围绕所有三个轴的旋转

我想围绕三个轴旋转View,具有3个不同的角度:rx、ry、rz。这是我做的:_tx=CATransform3DMakeRotation(rx*M_PI/360,1,0,0);_ty=CATransform3DMakeRotation(ry*M_PI/360,0,1,0);_tz=CATransform3DMakeRotation(rz*M_PI/360,0,0,1);view.layer.transform=CATransform3DConcat(_tx,CATransform3DConcat(_ty,_tz));虽然当我尝试反转连接顺序时它正在工作。例如,view.layer.tr

objective-c - 旋转 View 边缘的 CATransform3D 深度

我有一个旋转的UIImageView。当它旋转到与用户成90°的位置时,很明显View没有任何深度。就像以90°角度看一张纸。我正在使用://RotateCATransform3DrotationAndPerspectiveTransform2=CATransform3DIdentity;rotationAndPerspectiveTransform2.m34=1.0/-400;rotationAndPerspectiveTransform2=CATransform3DRotate(rotationAndPerspectiveTransform2,M_PI,1.0f,0.0f,0.0f

ios - 将 CATransform3D 转换为 CIVector 的 CIPerspectiveTransform,替换 UIGetScreenImage

是否可以将CATransform3D转换为一组CIVectors,以便使用CATransform3DUIImage?我相信现在终于有可能取代UIGetScreenImage()通过遍历View层次结构和渲染将UIView/CALayer的3D变换展平为图像的能力单个图像,然后将CATransform3D应用于创建的图像。我开始使用GPUImage,它确实接受CATransform3Ds以应用于UIImage,但遗憾的是没有成功。附件是我使用的代码,以及生成的图像的链接。ScreenshotofSimulatorImageProduced-(UIImage*)iterateLayerHi

objective-c - CATransform3D 动画的 CAKeyframeAnimation 上的平滑动画

我已经在View之间创建了自己的过渡动画。我为两个属性(位置和变换)设置动画,以在View之间提供类似立方体的过渡。框架使用CABasicAnimation,而转换使用“2-stage”CAKeyframeAnimation。除了一个我似乎无法弄清楚的小细节外,一切都很好。在我的过渡中,我在中间关键帧上应用了CATransform3DScale以创建放大/缩小效果。除了动画看起来有点生涩之外,效果很好。它以线性方式在关键帧之间设置动画,我想将其平滑化。现在CAKeyframeAnimation有办法使用calculationMode来做到这一点,但它似乎不适用于转换。我试过将它设置为k

iphone - 修改后的 .m34 的 CATransform3D 破坏了 iOS 6 中的 View 层次结构/排序,但没有破坏它所应用的 View

前言,这不是我在屏幕外丢失View,因为我做错了转换,这更奇怪。问题是,如果我使用.m34转换来实现我需要的透视图,View层次结构会中断,但删除转换后它会正确绘制所有内容。这是一个例子。我有一个背景图像(subviewOne)、一个菜单(subviewTwo)和一个位于我将CATransform3D应用于(subviewThree)的所有对象之上的对象。简单代码:CALayer*layer=subviewThree.layer;CATransform3DperspectiveTransform=CATransform3DIdentity;perspectiveTransform.m3

iphone - 使用 CATransform3DRotate 时的抗锯齿线

我从HowdoIapplyaperspectivetransformtoaUIView?的答案中复制了代码为了实现下图。但是请注意,锯齿状的线条分隔了各个层次。是否有办法以消除这些锯齿状线条的方式执行这种透视变换?编辑我在这篇文章的评论中尝试了DarkDust提供的解决方案。似乎没有一个工作。这是我的代码:levelView=[[UIControlalloc]initWithFrame:CGRectMake(100,60,160,230)];[selfaddSubview:levelView];levelView.transform=CGAffineTransformScale(sel

ios - 如何创建一个 CATransform3D 匹配另一个使用 setValue :forKey: 制作的

我试图创建一个CATransform3D,但弄错了。以下代码使用键值完成了我想要的操作:[_transitionLayersetValue:[NSNumbernumberWithFloat:metrics.translationPointsX]forKeyPath:@"sublayerTransform.translation.x"];[_transitionLayersetValue:[NSNumbernumberWithFloat:metrics.radians]forKeyPath:@"sublayerTransform.rotation.y"];[_transitionLaye