CGAffineTransformMakeRotation缩放图像

时间:2012-03-05 16:11:54

标签: iphone ios ios5

我正在使用图像并旋转它来实现基本的速度表。然而,当我设置初始旋转(在240度,转换为弧度)时,它旋转图像并使其比原本小得多。某些值会使图像完全消失。 (如M_PI_4)

滑块从0到360进行测试。

在viewDidLoad上调用以下代码,并更改滑块值。

-(void) updatePointer
{
    double progress = testSlider.value;
    progress += pointerStart
    CGAffineTransform rotate = CGAffineTransformMakeRotation((progress*M_PI)/180);
    [pointerImageView setTransform:rotate];
}

编辑:可能需要注意的是,一旦第一次设置,比例保持不变。因此,如果我将pointerStart设置为240,它会收缩,但移动滑块不会改变比例(并且它会像你怀疑的那样旋转它)在转换中用240替换“进度”也是同样的事情。 (收缩它。)

2 个答案:

答案 0 :(得分:2)

我能够为遇到这个问题的任何人解决这个问题。显然,当调用viewDidLoad时,图像没有被完全加载/测量,因此矩阵变换cgAffineTransform确实改变了图像的大小。将更新代码移动到viewDidAppear可以解决问题。

答案 1 :(得分:0)

获取要旋转的视图的变换状态,然后对其应用旋转变换。

CGAffineTransform  trans = pointerImageView.transform;

pointerImageView.transform = CGAffineTransformRotate(trans, 240);