それぞれがわずかに異なる画像を含むUIImageViewの4x6グリッドを作成したいと思います。また、インスタンスの1つをランダムに選択して、そのイメージを変更できるようにしたいと思います。
私の質問は、グリッド形式でUIImageViewsを設定し、各設定の間にいくつかのアクションを実行し、設定が完了したら24個のインスタンスからランダムに1つを選択するための最良の方法は何ですか。最適には、1つずつ設定する必要はありません。
前もって感謝します。
それぞれがわずかに異なる画像を含むUIImageViewの4x6グリッドを作成したいと思います。また、インスタンスの1つをランダムに選択して、そのイメージを変更できるようにしたいと思います。
私の質問は、グリッド形式でUIImageViewsを設定し、各設定の間にいくつかのアクションを実行し、設定が完了したら24個のインスタンスからランダムに1つを選択するための最良の方法は何ですか。最適には、1つずつ設定する必要はありません。
前もって感謝します。
Interface Builder を使用してグリッドをレイアウトするかどうかに応じて、さまざまな方法があります。
1 つのオプションは、24 個の UIImageView を IB 内の共通の親ビューのサブビューとしてレイアウトすることです。[View Attributes] タブで、1 から 24 までの「タグ」番号を設定して、UIImageView を区別できます。次に、コードで [parentView viewWithTag:tagNumber] を使用して各 UIImageView にアクセスできます。
よりプログラム的に行うことを好む場合は、UIViewController サブクラスの loadView メソッドのループで各 UIImageView を作成できます。コントローラーのプロパティとして配列 (または行と列に対応する配列の配列) を維持し、作成時にこれらの各イメージ ビューへの参照を格納できます。作成する UIImageView ごとに、その imageView.frame プロパティを設定してその位置を定義し、[view addSubview:imageView] を呼び出して親ビューに追加します。
私はあなたのためにプログラムでそれを行います。
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];