转换重置(重绘)我以前移动的所有视图

时间:2013-08-15 16:55:14

标签: iphone ios ipad

我使用计时器和动画块移动图像视图。同时用户可以点击这些视图(按钮)中的一些,然后我有一些动画块开始移动/调整大小/旋转不同的图像视图。

更改视图的alpha并为视图提供新的CGpoint非常适合我,但调用uiview.transform函数调整大小或旋转似乎会将我的所有视图重置为其起始位置(来自故事板)。

我真的很想能够在动画块中使用这个变换功能,但如果我不能以某种方式绕过这个重置,那对我来说这不是一个可行的选择。

示例代码:

- (void)moveGust:(NSTimer*) timer
{
    if(centerCloud1.x >= 1100)
    {
        centerCloud1.x = -79;
        gustOutlet.center = centerCloud1;
    }
    if(centerCloud2.x >= 1100)
    {
        centerCloud2.x = -79;
        cloudOutlet.center = centerCloud2;
    }

    centerCloud1 = gustOutlet.center;
    centerCloud1.x = round(centerCloud1.x+10);
    centerCloud2 = cloudOutlet.center;
    centerCloud2.x = round(centerCloud2.x+8);

    [UIView animateWithDuration:2 delay:0 options:UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionCurveLinear animations:^(void){
        gustOutlet.center = centerCloud1;
        cloudOutlet.center = centerCloud2;
    }completion:^(BOOL Finished){ }];
}

- (IBAction)signAction:(id)sender {

    [UIView animateWithDuration:0 animations:^(void) {
        signTop.transform = CGAffineTransformScale(signTop.transform, 1.1, 1.1);
    }];
}

有什么想法吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

需要使用CGAffineTransformConcat()连接连续转换。

当您将视图的变换设置为等于新变换时,您可以有效地“撤消”以前的变换。要进行一系列转换,请使用上述方法将它们连接起来。