0

如何仅将 4 个 UIButtons 放在 4 个随机位置。我有一个应用程序,每次按下更改位置按钮时都有 4 个 UIButtons,UIButtons 应该改变那里的位置,例如 Button1 移动到 Button4 的位置,而 Button4 随机移动到任何其他 Button 的位置

当我使用此代码时,按钮位置没有变化

-(void)changeButtonPosition {

NSMutableArray *array = [[NSMutableArray alloc] init];
[array addObject:[NSValue valueWithCGRect:CGRectMake(222,246,27,21)]];
[array addObject:[NSValue valueWithCGRect:CGRectMake(80, 246, 27, 21)]];
[array addObject:[NSValue valueWithCGRect:CGRectMake(165, 324, 27, 21)]];
[array addObject:[NSValue valueWithCGRect:CGRectMake(222, 324, 27, 21)]];


  NSUInteger count = [array count];
for (NSUInteger i = 0; i < count; ++i) {
    int nElements = count - i;
    int n = (arc4random() % nElements) + i;
    [array exchangeObjectAtIndex:i withObjectAtIndex:n];
}
btn1.frame = [((NSValue *)[array objectAtIndex:0]) CGRectValue];
btn2.frame = [((NSValue *)[array objectAtIndex:1]) CGRectValue];
btn3.frame = [((NSValue *)[array objectAtIndex:2]) CGRectValue];
btn4.frame = [((NSValue *)[array objectAtIndex:3]) CGRectValue];

} 谢谢 !

4

2 回答 2

0

将每个按钮的位置 (x,y) 存储在数组中。

然后生成一组随机数,使没有数字在它们之前的位置。

例如:

1,2,3,4 - 初始状态

2,4,1,3 - 在随机迭代中。

然后从数组中获取位置并将按钮添加到该位置。

希望这可以帮助。:)

于 2014-08-14T10:03:34.830 回答
0

这很简单,就像 pawan 评论的那样:编写一个返回 CGPoint 的函数(其中包含 x 和 y 位置,随机创建),并在您的 viewDidLoad 中,为您的 4 个按钮生成 4 组随机坐标。这将在 4 个随机位置设置您的 4 个按钮。

然后在你的按钮处理程序中,做同样的事情,然后从那里移动按钮。

应该很简单。

编辑:

要让方法返回 (x,y) 位置,您需要执行以下操作:

 - (CGPoint)randomPoint {
   int random_X = arc4Random() % WIDTH;
   int random_Y = arc4Random() % HEIGHT;
   return CGPointMake(random_X, random_Y);
 }

然后你的调用方法需要对这个返回的 CGPoint 值做一些事情。

编辑2:

如果您只需要 4 个按钮框架中的一个框架,那么您需要执行以下操作:使用 4 个按钮框架创建一个 NSArray,然后生成一个由 4 个数字组成的列表,这些数字是列表 [0, 1 , 2, 3] 并以这种方式获得您的“随机”框架。

于 2014-08-14T09:58:13.183 回答