0

我正在尝试复制 Music.app 的音量拇指反射。我创建了一个演示项目 来微调数学。

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

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

在 中ReflectedKnobViewCGAffineTransformRotate()视图以不可预知的方式倾斜和变形。

我复制的代码:

- (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));
}];
}

是s level3<Right/Left>UIImageView

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

如果您不明白我在这里所说的话,请下载演示项目并在设备上运行它。

4

1 回答 1

0

我刚刚对另一个问题做了类似的回答, 如何在 iOS 中旋转视图时计算仿射平移参数?

这是一个重述:

你需要注意旋转的两件事——你的锚点(旋转发生的点)和视图或视图控制器的尺寸。

原观点:

在此处输入图像描述

如果你的锚点在角落里,它会像这样旋转:

在此处输入图像描述

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

在此处输入图像描述

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

于 2013-03-25T03:40:15.390 回答