Ios 视图和视图控制器之间的CGAffineTransformRotate行为不一致

Ios 视图和视图控制器之间的CGAffineTransformRotate行为不一致,ios,rotation,cgaffinetransform,Ios,Rotation,Cgaffinetransform,我正在尝试复制音乐。应用程序的音量。我创造了一个 对数学进行微调 起初,我在控制器中设置视图动画,以保持其简单性。完成后,我决定创建一个自定义的ReflectedKnobView,以便在其他项目中使用它。我将相关代码从控制器复制到视图 尽管我复制的代码与控制器中的代码完全相同(进行相关修改),但当我运行应用程序时,视图的行为与控制器不同 在反射KnobView中,CGAffineTransformRotate()以不可预知的方式扭曲和变形视图 我复制的代码: - (void)updateValu

我正在尝试复制音乐。应用程序的音量。我创造了一个 对数学进行微调

起初,我在控制器中设置视图动画,以保持其简单性。完成后,我决定创建一个自定义的
ReflectedKnobView
,以便在其他项目中使用它。我将相关代码从控制器复制到视图

尽管我复制的代码与控制器中的代码完全相同(进行相关修改),但当我运行应用程序时,视图的行为与控制器不同

反射KnobView
中,CGAffineTransformRotate()以不可预知的方式扭曲和变形视图

我复制的代码:

- (void)updateValues
{    
CMRotationRate data = self.mManager.gyroData.rotationRate;

self.xLabel.text = [NSString stringWithFormat:@"%f", RadiansToDegrees(data.x)];
self.yLabel.text = [NSString stringWithFormat:@"%f", RadiansToDegrees(data.y)];
self.zLabel.text = [NSString stringWithFormat:@"%f",RadiansToDegrees(data.z)];

[UIView animateWithDuration:1/20 animations:^{
    self.level3Left.transform = CGAffineTransformRotate(self.level3Left.transform, ((data.y / 240) + (data.x / 200)));
    self.level3Right.transform = CGAffineTransformRotate(self.level3Right.transform, ((-1 * data.y) / 240) + (data.x / 200));
}];
}
level3
UIImageView
s

我怀疑
cGraffineTransformRotate()
的行为有所不同,因为我在一种情况下在视图中调用它,在另一种情况下在控制器中调用它


如果你不明白我在这里说的话,请下载并在设备上运行。

我刚刚对另一个问题做了类似的回答

下面是对这一点的重新阐述:

在旋转时,需要注意两件事:定位点(旋转发生的点)和视图或viewController的尺寸

原始视图:

如果您的定位点位于拐角处,则其旋转方式如下:

如果你的锚点在中间,它就这样旋转:


如果您有一个方形图层、视图或视图控制器,它会很好地旋转。旋转时,矩形视图似乎在做一些奇怪的事情,但如果您知道大小差异,您可以进行调整。

您下载了演示项目吗?我在两个地方有完全相同的代码,但它们以不同的方式旋转视图。我没有改变锚点,所以它默认为中心。