2011-03-13 23 views
0

所以我想把一些UIImageViews放到我的视图中。我希望它们随机放置,我需要能够在代码中获取每个随机UIImageView的位置。随机放置UIImageViews,然后能够找到它们

我只需要5个UIImageView并分别做每一个,但我稍后可能需要更多或更少的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

位置是否改变?还是保持静态?它是您以后在代码中想要的原始位置吗? – Zigglzworth 2011-03-13 15:45:00

+0

我还不确定。现在,让我们说它保持静态,我想要原始位置。 – Andrew 2011-03-13 19:58:40

回答

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元素都有一个属性标记,您可以设置它来标识元素。

+0

谢谢,那是为我做的。 – Andrew 2011-03-13 20:41:18

+0

我正在使用此代码并在for循环中将每个CGPoint添加到数组中。然后,我会在稍后从数组中取回该值。是'[NSValue valueWithCGPoint:CGPointMake(x,y)]'最好的方法来做到这一点 – Andrew 2011-03-13 22:59:15

1

存放在NSArray中的每个实例的UIImageView以便以后能够得到他们的举行。然后,只需使用帧属性再次检索位置:

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阵列中的所有观点。

相关问题