0

だから私はいくつかの UIImageViews を自分のビューに入れたいと思っています。それらをランダムな場所に配置したいので、後でコードでランダムな UIImageView のそれぞれの場所を取得できるようにする必要があります。

私は 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);
}
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 に答える