0

在我的应用程序中,我有一个向上和向下按钮。如果你愿意的话,我的应用程序的功能就像一个 Game Boy,我有一个 UIImageView,其中包含一个箭头,每次按下按钮时都会移动到 CGPoint。

我有三个用户可以选择的选项,但我只能将我的向下按钮编程为向下一次,而不是能够选择向下到第三个选项。我的向上按钮也是如此。

我的问题是:
我怎样才能点击我的向下按钮一次向下,然后再次向下,然后向上然后再次向上?
令人困惑,我知道,但我是一名年轻的开发人员。谢谢!

我将箭头向上移动的代码:

[arrow setCenter:CGPointMake(204, 93)];

我将箭头向下移动的代码:

[arrow setCenter:CGPointMake(176, 140)];
4

2 回答 2

1

以下是有关如何解决您的问题的一些提示。尝试将选项选择与显示代码分开。跟踪选择选项,而不是箭头的位置。

假设您的选项是 0、1、2。在您的界面中:

@property (nonatomic, assign) NSUInteger option;

在您init或其他地方:

self.option = 0; // or whatever the default option is

按下向上按钮时:

self.option = self.option++;

按下向下按钮时:

self.option = self.option--;

接下来,在进行递增或递减之前,请检查您没有递减超过 0(底部选项)或递增超过 2(顶部选项)。

设置选项值后,根据选项适当放置箭头。将下面的 Y 值更改为标签的 Y 中心。

static const CGFloat optionYs[3] = { 10.0, 20.0, 30.0 };

CGFloat y = optionYs[self.option];
[arrow setCenter:CGPointMake(x, y)];

希望这能让您走上正确的道路!

于 2013-07-23T03:58:10.997 回答
0

您可以尝试使用箭头的属性将其从当前位置向上和向下移动少量,而不是在按下按钮时硬编码您希望它去的位置。

向上:

[arrow setCenter:CGPointMake(arrow.center.x, arrow.center.y - 10.0)];

对于羽绒:

[arrow setCenter:CGPointMake(arrow.center.x, arrow.center.y + 10.0)];

编辑:
如果您希望箭头坚持三个不同的 y 值,则需要在设置新值之前检查 y 的当前值。因此,假设您希望箭头指向 10.0、20.0 或 30.0。如果它是 30.0 并且您向上按,您希望它更改为 20.0。如果是 20.0,您希望它更改为 10.0。如果是 10.0,您希望它环绕并回到 30.0。像这样的东西应该工作:

if([arrow.center.y == 30.0)
{
    [arrow setCenter:CGPointMake(arrow.center.x, 20.0)];
}
else if(arrow.center.y == 20.0)
{
    [arrow setCenter:CGPointMake(arrow.center.x, 10.0)];
}
else
{
    [arrow setCenter:CGPointMake(arrow.center.x, 30.0)];
}

下也类似。

于 2013-07-22T19:06:12.307 回答