可可触摸 - 定时器动画

时间:2011-03-11 10:55:52

标签: iphone cocoa-touch

我正在尝试为UIImageView创建一个简单的翻译动画。 起初我很愿意使用[UIView动画]类,但我意识到它并没有给我足够的控制动画期间的事件(例如,与其他对象的简单碰撞)。

然后我考虑使用一个简单的线程来修改我的UIImageView的中心坐标,然后睡觉并重复直到动画完成或发生某事(参见:碰撞或对象本身消失)

这是我写的代码:

-(void)animateImageView:(UIImageView*)view{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    float totalTime=6.0f;
    float elapsedTime=0;
        while(totalTime<=elapsedTime){
                        if(conditions){...}//here are my checks
            CGPoint newCenter=CGPointMake(view.center.x+10, view.center.y);
            view.center=newCenter;
            NSLog(@"%f",view.center.x);
            elapsedTime+=0.1;
            [NSThread sleepForTimeInterval:0.1];
            }
    [view performSelectorOnMainThread:@selector(removeFromSuperview) withObject:nil waitUntilDone:YES];

    [pool release];

}

事实上,我的图像不会移动,但NSLog命令会显示图像中心所在的正确坐标。 阿妮想法为什么? 也许这是错误的做法?

1 个答案:

答案 0 :(得分:0)

所有UIKit类都不是线程安全的。因此,仅从主线程(view.center=newCenter;)开始使用它们。