0

所以我想把一些 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);
}
4

2 回答 2

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

于 2011-03-13T16:00:13.110 回答
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数组中获取所有视图。

于 2011-03-13T15:53:09.663 回答