-1

偶数行には白い背景、奇数行には黒い背景が必要です。私は考えています:

方法 1: セルにプロパティを追加して、表示されたときにセルの位置を示します。これにより、セルの色を切り替えることができます。または、セルを返すときに、その位置を確認して色を切り替えることができます。

  • これは単に動作するはずです
  • 行が削除/追加されたときにテーブル全体をリロードする必要がある

方法 2: 行の高さが固定されているため、黒と白のストリップが繰り返される伸縮可能な背景画像を追加し、何らかの方法でテーブルと一緒にスクロールさせます。

  • これは方法 1 よりもスマートに聞こえます
  • テーブルビューが大きい場合、非常に大きな背景画像が必要になる場合があります

これを行う他の方法はありますか?

ありがとう!

4

3 に答える 3

4

行が奇数か偶数かを確認して背景を設定しないのはなぜですか。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
        {
    ........
    if (indexPath.row % 2 == 0)  //even
    {
    cell.backgroundView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"Black"]];


    }
    else
    {
    cell.backgroundView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"White"]];
    }
于 2012-11-05T05:22:33.373 に答える
1

これまでの他のすべての回答は、行の挿入と削除に関連する問題を無視しているようです。

最も簡単な方法は、行を挿入または削除するときに、挿入/削除ポイントの下に表示されているすべての行をリロードすることだと思います。表示範囲より下の行を処理する必要はありません。

100 行あり、20 ~ 30 行を表示しているとします。あなたが述べたように、偶数行は白です。行 35 で行が挿入/削除された場合、影響を受けるすべての行が画面外にあるため、何もする必要はありません。行 25 で挿入/削除された行は、正しい色ですぐに表示されます。適切な新しい色で更新されるように、行 26 ~ 30 を再読み込みする必要があります。行 15 で行が挿入/削除された場合、行 20 ~ 30 (すべての表示行) を再ロードする必要があります。

必要に応じて、いくつかの最適化を行うことができます。たとえば、2 つの行が追加された場合 (15 と 16 など)、何もする必要はありません。

基本的なアルゴリズムは[tableView indexPathsForVisibleRows]、挿入/削除を行った後に呼び出すことです。次に、パスが挿入/削除されたインデックス パスの後にある場合は、それらのパスをそれぞれ再読み込みします。

于 2012-11-05T05:42:06.390 に答える
0

はい、次のようにindexpathを確認しindexpath%3 == 0、方法1のようにセルに背景色を追加できます cell.backroundcolor = [UIColor bluecolor];

そして、方法2のようにセルの背景画像を追加します
cell.bakgroundView = [UIImageview alloc]inithWitImage:[UIImage imagenamed@"cellBG.png"]];

于 2012-11-05T05:23:05.440 に答える