1

我有一个相当令人费解的问题。我有一个 UIImageView,我向它提供一个以弧度为单位的角度来旋转它的函数。它工作正常,但是我现在想用一个常数偏移角度。有趣的是,如果我对偏移变量对 M_PI 进行任何形式的除法或乘法运算,图像视图会倾斜而不旋转?

- (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 也是如此。

变换搜索

还有其他想法吗?

4

1 回答 1

1

好的,我发现了问题,不确定“为什么”,但解决方案是将图像视图绘制模式从“缩放到填充”更改为“中心”

我完全不知道为什么这会影响将角度偏移一个常数? 在此处输入图像描述

于 2012-08-21T03:37:09.820 回答