把UIButton放在随机位置

时间:2014-08-14 09:50:33

标签: ios objective-c xcode uibutton cgrectmake

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

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

- (无效)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];

} 谢谢!

2 个答案:

答案 0 :(得分: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,然后生成一个包含列表[0,1,2,3]的随机排列的4个数字的列表,并以此方式获取“随机”帧。

答案 1 :(得分:0)

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

然后生成一组随机数,以便之前没有数字。

例如:

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

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

然后从阵列中取出位置并将按钮添加到该位置。

希望这会有所帮助。 :)