我有一个相当令人费解的问题。我有一个UIImageView,我以弧度为角度提供一个旋转角度的函数。它工作正常,但我现在想要将角度偏移一个常数。有趣的是,如果我对M_PI的偏移量变量进行任何分割或乘法,则imageview会偏斜并且不会旋转吗?
- (void)rotateDialToAngle: (CGFloat)angle {
CGFloat offsetAngle = -0.075f * (2.0f * M_PI);
offsetAngle += angle;
if(offsetAngle >= M_PI * 2)
offsetAngle -= M_PI * 2;
if(offsetAngle < 0)
offsetAngle += (M_PI * 2);
self.clockDialImageView.transform = CGAffineTransformMakeRotation(offsetAngle);
}
上面的代码是预期的状态。如果我用M_PI替换offSetAngle计算,它具有将旋转偏移180度的预期行为。如果我用M_PI / 2或其他任何东西替换它,我会得到偏斜行为。
if语句用于将度数钳制到不大于360的正度。这些工作按预期工作。
注意:这是代码中唯一一个在图像视图上进行任何形式转换的函数。
注2:虽然视图偏斜,但仍然会应用旋转。
编辑:代码中的其他变换不能解释问题如何与单行代码隔离以及对该行中的常量进行操作。 编辑:寻找其他变换 - 没什么。 CMPopTipView在此控制器外部,不使用。和DejalActivityView一样。
还有其他想法吗?
答案 0 :(得分:1)
好的我发现了问题,不确定“为什么”,但解决方法是将图像视图绘制模式从“缩放到填充”更改为“中心”
我完全不知道为什么这会影响一个角度的偏移?