我正在以一种方式执行任务,即我拍摄了一张图像和二十到三十个矩形单元格按钮。
对于那些矩形单元格,我将它们命名为1,2,3,4,5,--------,30。我将矩形单元排列成6×7矩阵。现在,如果我单击矩形单元格按钮29,图像必须找到该矩阵中的最短路径才能到达该单击按钮。
我该如何执行此操作?
答案 0 :(得分:1)
您想要将一个图像设置为30个按钮之一的位置吗?此外,您希望它不是在对角线上移动,而是先水平移动,然后垂直移动? CodaFi的代码非常接近我的意思。我会写一个IBAction方法,我将附加到所有按钮。以CodaFi代码为基础的Startig,这是我建议的行动方法:
-(IBAction)animateImageToButton: (id) sender
{
button = (UIButton *) sender;
//First animate the image to the x position of the button
CGPoint fPoint = CGPointMake(button.center.x, image.center.y);
CGPoint sPoint = button.center;
//animate x position first.
[UIView animateWithDuration: 1.0f animations: ^
{
[image setCenter:fPoint];
}
completion ^(BOOL finished)
{
//Once that animation is complete, create
//a second animation to move to the button's y position
[UIView animateWithDuration: 1.0f animations: ^
{
[image setCenter:sPoint];
}];
}];
}
该代码会将一个名为Image的UIImageView移动到被点击的按钮上。
答案 1 :(得分:0)
我不会给按钮命名,而是给它们tag
。我会使用以下方案:
button.tag = xCoordinate *100 + yCoordinate;
因此,例如,对于顶行左侧的第三个按钮,标记为301
。检索这样的坐标:
xCoordinate = button.tag / 100;
yCoordinate = button.tag % 100;
现在,您只需通过更改图像的center
的x和y坐标,将图像设置为按钮的frame
或其附近的其他点的动画。
答案 2 :(得分:0)
我不同意mundi铺设的标签方法,因为图像会以对角线移动到达目的地。我想一个for循环是合适的,所以这是我的方法:
-(void)animateOnLinesWithClickedButton:(UIButton*)button {
for (UIButton *image in self.view.subviews){
CGPoint fPoint = CGPointMake(button.center.x, image.center.y);
CGPoint sPoint = button.center;
//animate x position first.
[UIView animateWithDuration:1.0f animations:^{
[image setCenter:fPoint];
}
completion^(BOOL finished){
[UIView animateWithDuration:1.0f animations:^{
[image setCenter:sPoint];
}];
}];
}
}
这会将按钮逐个设置为正确的x,然后是y位置。使用此方法的延迟变化来创建更逼真的效果。