2009-09-01 5 views
1

それぞれわずかに異なるイメージを含む4 x 6グリッドのUIImageViewを作成したいとします。また、インスタンスの1つをランダムに選択してイメージを変更することもできます。複数のUIImageViewインスタンスを設定する

私の質問は、グリッド構成でUIImageViewsを設定し、各設定の間にいくつかのアクションを実行し、セットアップが完了したら24インスタンスのうちの1つをランダムに選択する最良の方法です。最適には、私はそれぞれをひとつずつ設定する必要はありません。

ありがとうございます。

答えて

2

グリッドのレイアウトにInterface Builderを使用するかどうかによって、さまざまな方法があります。

1つのオプションは、24個のUIImageViewをIB内の共通の親ビューのサブビューとしてレイアウトすることです。 View Attributesタブでは、UIImageViewsを区別するために1から24の「Tag」番号を設定できます。あなたのコードでは[parentView viewWithTag:tagNumber]を使って各UIImageViewにアクセスできます。

よりプログラム的に行うことを好む場合は、UIViewControllerサブクラスのloadViewメソッドでループ内にそれぞれのUIImageViewを作成できます。コントローラのプロパティとして配列(または行と列に対応する配列の配列)を保持し、それらを作成するときにこれらのイメージビューの参照を格納することができます。作成したUIImageViewごとに、そのimageView.frameプロパティを設定して位置を定義し、[view addSubview:imageView]を呼び出して親ビューに追加します。

1

私はあなたのためにプログラムで行います。

NSArray *myViews = //I assume you can create an array of views 

for (int i=0; i<rows; ++i) { 
    for (int j=0; j<columns; ++j) { 
     UIImageView *thisImageView = [myViews objectAtIndex:(i*columns+j)]; 
     CGSize size = thisImageView.image.size; 
     [thisImageView setFrame:CGRectMake(j*size.width, i*size.height, size.width, size.height)]; 
     [self.view addSubview:thisImageView]; 
    } 
} 

//Later to pick one randomly 
UIImageView *myRandomView = [myViews objectAtIndex:(arc4random()%[myViews count])]; 
[myRandomView setImage:myNewImage]; 
関連する問題