如何正确使用CGAffineTransformConcat,结合缩放和旋转

时间:2013-04-21 14:43:31

标签: objective-c cocoa-touch cgaffinetransform

我正在创建视图,然后旋转它们并翻转它们。似乎可以使用CGAffineTransformConcat来梳理比例和旋转以获得我期望的结果,但是我遇到了一些麻烦。

最初我设置了一个垂直翻转视图的转换。

CGAffineTransform flipViewTrans;

viewFlipTrans = CGAffineTransformMakeScale(1, -1);
selectedView.transform = CGAffineTransformConcat(selectedView.transform, flipViewTrans);

enter image description here

当我旋转视图时,我将原始翻转变换连接起来,这似乎通过旋转完全按照预期保留此翻转变换。

-(IBAction)rotateView:(UISlider*)sender {
    float angle = sender.value;
    selectedView.rotation = angle;
    [selectedView setTransform:CGAffineTransformMakeRotation(angle)];
    selectedView.transform = CGAffineTransformConcat(selectedView.transform, flipViewTrans);
}

enter image description here

视图也很好。

-(IBAction)flipSickerH:(GradientButton*)sender {
    viewFlipTrans = CGAffineTransformMakeScale(-1, 1);
    selectedView.transform = CGAffineTransformConcat(selectedView.transform, viewFlipTrans);
}

enter image description here enter image description here enter image description here

问题是当我按照上面的方式进行翻转后旋转时,结果不会如预期的那样出现。视图突然向相反方向翻转。

enter image description here

我认为,正在发生的是连接的变换被重置,因此唯一的变换是旋转。因此,在这种情况下,旋转代码中的串联可能会失败。

关于我需要做什么的任何线索?

0 个答案:

没有答案