如何将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];
} 谢谢!
答案 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 - 在随机迭代中。
然后从阵列中取出位置并将按钮添加到该位置。
希望这会有所帮助。 :)