iphone - 如何使用 CATransform3DRotate 旋转 UIImageView 做出类似开门的效果?

标签 iphone core-animation catransform3d sliding-doors

我已阅读并尝试此 article (Opening door effect using Core Animation)

我在我的应用程序中实现了以下代码:

    CALayer *layer = threeHomeView.layer;
CATransform3D initialTransform = threeHomeView.layer.transform;
initialTransform.m34 = 1.0 / -900;

[UIView beginAnimations:@"Scale" context:nil];
[UIView setAnimationDuration:3];
layer.transform = initialTransform;
CATransform3D rotationAndPerspectiveTransform = threeHomeView.layer.transform;

rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform
                                                      , 40.0f * M_PI / 180.0f
                                                      , 0.0f
                                                      , 1.0f
                                                      , 0.0f);
layer.transform = rotationAndPerspectiveTransform;

[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(threeHomeFlyOut)];
[UIView commitAnimations];  

twoHomeView 是一个 UIImageView。

我的问题是:图像只能按图像的中间垂直线旋转,但我希望它按图像的左侧垂直线旋转。

最佳答案

使用CATransform3DRotate,就像与CATransform3DTranslate结合使用一样,围绕边缘旋转,就像我在this answer中所做的那样。以下是一些摘录(您需要对其进行修改以供自己使用):

CATransform3D t = CATransform3DIdentity;
t = CATransform3DTranslate(t, 0, -self.view.bounds.size.height/2, 0);
t = CATransform3DRotate(t, rec.scale * M_PI, 1, 0, 0);
t = CATransform3DTranslate(t, 0, -self.view.bounds.size.height/2, 0);
self.view.layer.transform = t;

关于iphone - 如何使用 CATransform3DRotate 旋转 UIImageView 做出类似开门的效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6531332/

相关文章:

iphone - GKPeerPickerController 和 GKSession

swift - 有没有办法在 Swift 中立即发送本地通知?

ios - CATextLayer 旋转后文本模糊

core-animation - CATransform3D 等同于 CGPointApplyAffineTransform 和 friend

ios - HTML5 视频并不总是在 iPhone 上自动播放

ios - 即使超过缓存控制期限限制,也会从缓存中加载值

ios - 如何为 CALayer 的 'position' 属性添加隐式动画?

ios - 在 iOS 中将线弯曲成圆圈

iphone - 将逆 CATransform3D 应用于已转换的 CALayer 的子层

ios - 需要更好更简单地理解 CATransform3D