您可以使用QuartzCore转换来实现这一点。首先,如果尚未完成,则必须添加QuartzCore框架。现在在适当的文件中输入<QuartzCore/QuartzCore.h>
。一个例子改造,实现在x轴翻转,并调整到一个新的高度看起来是这样的:
CALayer *testLayer = test1.layer;
double oldSize = test1.bounds.size.height;
double newSize = 100.0;
testLayer.transform = CATransform3DConcat(CATransform3DMakeRotation(M_PI, 0.0, 1.0, 0.0),
CATransform3DMakeScale(1.0, newSize/oldSize, 1.0)
);
test1
这里是需要转换的观点。这是通过首先围绕y轴旋转半圈(以弧度为单位的PI)(这实际上是左右旋转)来实现的。然后缩放变换保持x和z原样但是缩放y,这样新的高度将完全符合要求的newSize
。请注意,这个转换只会改变渲染。例如,如果您现在将视图的bounds
更改为新的高度,则转换将应用于该转换,并且您会缩放新的(更大/更小)对象两次。
根据所需的旋转,您还可以沿着x轴旋转以上下或上下任意旋转,例如, CATransform3DMakeRotation(M_PI_4,0.0,0.0,1.0)顺时针旋转45度。也要小心转换顺序,因为这会导致不良影响。
旋转不一定是动画。我只需要在我的UIView上放置一个对象,以便旋转x轴 – Oleg