踪迹效果

时间:2017-05-27 16:35:30

标签: ios objective-c

当突出显示某个区块时,我试图完成一种跟踪效果:here

我尝试更改图像,但要完成我想要的是选择下一个图像,然后更改回白色,例如,如果第一个图块是蓝色,但是你想要第三个,它不会第一个是蓝色,第二个是蓝色,然后是白色,然后是第三个。我希望这是有道理的。这是我的代码

- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.


UIImage *image = [UIImage imageNamed:@"inside_blue"];
_t1.image = image;
wait = @"yes";
}


 - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}


- (IBAction)move:(id)sender {
UIImage *imageblue = [UIImage imageNamed:@"inside_blue"];
UIImage *imagewhite = [UIImage imageNamed:@"inside_white"];
_t1.image = imagewhite;
_t2.image = imageblue;
[self performSelector:@selector(waitTime) withObject:nil afterDelay:0.2];
while ([wait isEqualToString:@"yes"]) {
    //hi
}
_t2.image = imagewhite;
_t3.image = imageblue;
[self performSelector:@selector(waitTime2) withObject:nil afterDelay:0.2];
while ([wait2 isEqualToString:@"yes"]) {
    //hi
}
_t3.image = imagewhite;
_t4.image = imageblue;

}

- (void)waitTime2 {

wait2 = @"no";

}


- (void)waitTime {

wait = @"no";

}

但这只会冻结应用程序。

1 个答案:

答案 0 :(得分:0)

当然,这会冻结应用程序。当应用程序返回到运行循环并且可以提供绘图事件时,绘图完成。

您必须编写代码"异步",将实际状态存储到视图对象并触发重绘。设置定时器后,您将返回代码,设置下一个状态并再次触发绘图。我建议您阅读绘图简介。对SO的答案来说,整个解释太过分了。

可能更容易将整个移动实现为可动画的属性。在这种情况下,时间和重绘将自动执行。