5

UITableViewアプリに適切に実装しました。ここで、UI を少し変更したいので、次の図に示すように、各セル間にスペースが必要です。

ここに画像の説明を入力

それは可能ですか?もしそうなら、どのように?

また、各セルの間に、ビューの背景画像をブロックする白い領域がないように透明にすることはできますか?

4

3 に答える 3

8

それを行うには、少なくとも2つの方法を考えることができます。

1)透明で好きな高さの空のセルを作成し、このセルをインデックス1、3、5、7、9、11の行に使用します...

私は以前にこのアプローチを使用してカスタム セパレータ セルを作成しましたが、まったく同じことができ、大きな透明なセパレータ セルのようにセル間のスペースを確認できます。この質問にコードを投稿して見てください。

2)2番目のオプションは、下部に透明な部分がある画像を使用することです。このようにして、セルの間にスペースがあるように見えます。

異なる種類のセルに対して異なる高さを返すには、次のようにします。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.row % 2 == 0) {
        // this is a regular cell
        return REGULAR_CELL_HEIGHT;
    }
    else {
        // this is a "space" cell
        return SPACE_CELL_HEIGHT;
    }
}  

おそらく、「スペース」セルでの選択とユーザーの操作を無効にする必要があるため、これをcellForRowAtIndexPathメソッド に追加するだけです。

if (indexPath.row % 2 == 0) {
    cell.userInteractionEnabled = YES;
}
else {  
    cell.userInteractionEnabled = NO;
}

これにより、セルとのユーザーの対話がブロックされます。ユーザーがセルをタップしたときに選択範囲の青色を表示したくないが、didSelectRowAtIndexPathデリゲート メソッドを呼び出したい場合は、上記のコードを次のように置き換えます。

if (indexPath.row % 2 == 0) {
    cell.selectionStyle = UITableViewCellSelectionStyleBlue;
}
else {  
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
于 2012-08-08T19:53:20.543 に答える
0

Eyalの答えは非常に健全ですが、これを行う別の簡単な方法は、セルを必要以上に大きくし、セパレーターに必要な背景色を持つセルの下部に目的のセパレーターの高さであるビューを配置することですすることが。

たとえば、高さ 40 でセパレーター 3 のセルが必要な場合は、高さ 43 のセルを作成し、高さ 3 の y = 40 にビューを配置し、背景色を必要に応じて設定します。

于 2014-03-17T17:11:07.330 に答える
-1

1.グループ化されたテーブルビューとセクションを使用できます。

2.各セクションには単一の行があり、

3.テーブルビューの背景色をクリアカラーに。

于 2012-08-08T12:38:27.653 に答える