1

それぞれがわずかに異なる画像を含むUIImageViewの4x6グリッドを作成したいと思います。また、インスタンスの1つをランダムに選択して、そのイメージを変更できるようにしたいと思います。

私の質問は、グリッド形式でUIImageViewsを設定し、各設定の間にいくつかのアクションを実行し、設定が完了したら24個のインスタンスからランダムに1つを選択するための最良の方法は何ですか。最適には、1つずつ設定する必要はありません。

前もって感謝します。

4

2 に答える 2

2

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

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

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

于 2009-09-02T04:54:15.293 に答える
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];
于 2010-01-22T00:30:53.433 に答える