所以我想把一些UIImageViews放到我的视图中。我想让它们放在随机的地方,我需要能够在代码中获得每个随机UIImageView的位置。
我只需要5个UIImageViews并分别进行每个操作,但是稍后我可能需要多于或少于5个,所以标准的,统一的方式将是最好的方法。
这是我现在正在使用的代码:
for (int i=0; i<5; ++i) {
snack = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"03-loopback.png"]];
//snack.frame = CGRectMake(104, 76, 32, 22);
snack.frame = CGRectMake(arc4random()%448, arc4random()%298, 32, 22);
[self.view addSubview:snack];
snackLocation = CGPointMake(snack.center.x, snack.center.y);
}
答案 0 :(得分:3)
我认为你可以使用标签:
添加for循环:
snack.tag=i;//Set the tag for each imageview
然后,要访问子视图,您可以在主视图的每个子视图上循环
for (UIView *yourSubView in [self.view subviews]) {
if (yourSubView.tag == YOUR_TAG) {
//Do what you want with the view
break;//jump out the loop
}
}
您也可以使用它来编写更少的代码并直接访问子视图的框架:
[self.view viewWithTag:YOUR_TAG].frame=YOUR_FRAME;
看看IB中的检查器,每个UI元素都有一个属性标记,您可以设置该标记来标识元素。
答案 1 :(得分:1)
将每个UIImageView实例存储在NSArray中,以便稍后获取它们。然后再次使用frame属性来检索位置:
for (int i=0; i<5; ++i) {
snack = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"03-loopback.png"]];
snack.frame = CGRectMake(arc4random()%448, arc4random()%298, 32, 22);
[self.snackViews addObject:snack]; //self.snackViews is an NSMutableArray
[self.view addSubview:snack];
}
稍后,您可以从self.snackViews
数组中获取所有视图。