0

私のアプリでは、ユーザーはプログラムで多くのUIImageViewを作成でき、タグはすべてのImageViewに正常に割り当てられます。次に、次の方法で画像のタグを検出し(この場合はタッチを移動して)、タグに応じて色を変更します。

int touchedtag = touch.view.tag;

    NSUInteger tagCount = touchedtag;
    switch (tagCount) {
        case 1: 
            image1.backgroundColor = [UIColor redColor];
            break;
        case 2: 
            image1.backgroundColor = [UIColor yellowColor];
            break;
        case 3: 
            image1.backgroundColor = [UIColor brownColor];
            break;
        case 4: 
            image1.backgroundColor = [UIColor blackColor];

            break;
        default :

            break;

    }

ご覧のとおり、4つのケースがあります。しかし、ユーザーが50個のUIImageViewを作成する場合、50個のケースを作成する必要がありますか、それとも少ないコードでこの識別プロセスを実行できますか?(色の変化は、それが機能するかどうかを確認するためのものであると考えてください。ただし、これはタグを識別するためにのみ使用されます)

4

3 に答える 3

0

1色だけを使用する場合は簡単ですが、50種類の色が必要な場合は、50個のケースを作成する必要があります。

于 2012-05-04T20:16:12.903 に答える
0

50種類のUIImageViewタグについては、プログラムでタグを定義することもできます。

for(int i = 0 ;i < 50;i++)
{
     UIImageView *yourIMG = [[UIImageView alloc] init];
     yourIMG.tag = i;
}

そして、それらのタグでケースを切り替えます

UIImageView50種類の色については、次のようなRGBパラメータを使用して色をカスタマイズできます。

[UIColor colorWithRed:225 green:225 blue:225 alpha:1];

ループを使用forして、これらのパラメータをプログラム可能に調整してみてください。たとえば、画像ごとに赤を2単位増やしたり、青を10単位減らしたりします。

お役に立てば幸いです。

于 2012-05-04T20:23:07.033 に答える
0

数値を確認するためだけに50のケースを作成したり、そのことについてはまったくケースを作成したりすることは絶対に避けてください。タグ値をどうしますか?任意の色を割り当てますか?

いずれにせよ、これはcaseステートメントを使用せずにサンプルコードを複製したものです。

NSArray *colors = [[NSArray alloc] initWithObjects:[UIColor redColor], [UIColor yellowColor], [UIColor brownColor], [UIColor blackColor], nil];

NSUInteger touchedtag = touch.view.tag;
image1.backgroundColor = [colors objectAtIndex:touchedtag];

もちろん、タグが配列の色数よりも大きい場合は、問題が発生します。他のロジックでそれを解決するか、2行目を次のように変更してアレイ全体をリサイクルし続けることができます。

NSUInteger touchedtag = touch.view.tag % colors.count;
于 2012-05-04T20:25:16.577 に答える