2012-03-05 121 views
2

我正在使用图像并旋转它来实现基本速度计。但是,当我设置初始旋转(如240度,转换为弧度)时,它会旋转图像,并使图像比其他图像小得多。有些值会使图像完全消失。 (如M_PI_4)CGAffineTransformMakeRotation缩放图像

滑块从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

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

+1

谢谢你,你让我的一天 – 2013-04-16 13:58:00

0

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

CGAffineTransform trans = pointerImageView.transform; 

pointerImageView.transform = CGAffineTransformRotate(trans, 240); 
+0

这与上面使用的方法具有相同的功能 - 事实上,您的实现是我以前的工作,并且我将其切换为查看问题是否存在。 – Nyth 2012-03-12 15:47:10