我在 CALayer 的子类中使用此代码,其中实例是根 CALayer 的子层。
-(void)setSelected:(bool)s {
selected=s;
if (s)
{
CATransform3D rot = CATransform3DMakeRotation(M_PI, 0, 1, 0);
rot.m34=-1.0 / 200;
[self setTransform:rot];
}
else
{
CATransform3D rot = CATransform3DMakeRotation(0, 0, 1, 0);
rot.m34=-1.0 / 200;
[self setTransform:rot];
}
}
当所选属性设置为 TRUE 时,会发生以下情况:旋转完成直到角度等于 M_PI/2,然后图层消失,因为它是正交的。动画的结束是错误的:在动画的第一部分(例如左侧)出现增长的边缘,在左侧而不是右侧结束动画。但是内容被翻转了。
我认为这与两个旋转矩阵之间的插值有关,但我不明白到底发生了什么。
细节:动画看起来是这样的:
- 将绕 Y 轴的旋转增加 +Pi/2
- 内容翻转
- 将围绕 Y 轴的旋转增加 -Pi/2,就好像它从 (yz) 平面反弹
翻转的内容是我想要实现的。
这是我得到的动画帧。如您所见,梯形的小边总是在左边;它应该在动画结束时的右侧(右上角的框架)。
最佳答案
如果有人只想水平翻转图像或 View 的方向
yourView.layer.transform = CATransform3DMakeScale(-1, 1, 1);
或
yourView.layer.affineTransform = CGAffineTransformMakeScale(-1, 1);
关于ios - 如何围绕 Y 轴翻转 CALayer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12579985/