189

から継承するカスタム テーブル ビュー セル クラスを実装しましたUITableViewCell。テーブルビューには背景画像が含まれているので、セルの背景を透明にしたい。iOS7より前は見栄えがします。

ただし、iOS7 では、セルは常に白い背景で表示されます。


Xcode7、2015 の場合でも、ストーリーボードにバグがあります。コードでセルの背景色を設定する必要があります。

4

14 に答える 14

385

Apple DOCが言ったように(UITableViewCell Class Reference):

... iOS 7 では、セルの背景はデフォルトで白です。以前のバージョンの iOS では、セルは囲んでいるテーブル ビューの背景色を継承します。セルの背景色を変更する場合は、テーブル ビュー デリゲートのtableView:willDisplayCell:forRowAtIndexPath:メソッドで行います。

私の場合、背景が透明なセルを表示するには、以下のようにテーブル ビュー コントローラーにデリゲート メソッドを実装するだけです。

- (void)tableView:(UITableView *)tableView
  willDisplayCell:(UITableViewCell *)cell
forRowAtIndexPath:(NSIndexPath *)indexPath
{
  [cell setBackgroundColor:[UIColor clearColor]];
}

ただ注意:@nullが言ったように、「...インターフェースビルダーにバグがあるようです...」、バグがあるかどうかは完全にはわかりませんが、彼のコメントがいくつかの賛成票を得た原因のようです。そのため、IB を使用すると問題が発生する可能性があります。:)

于 2013-09-18T17:08:20.460 に答える
30

セルを返す前に、これを cellForRowAtIndexPath メソッドに記述します。

cell.backgroundColor = [UIColor clearColor];
于 2013-10-21T10:22:54.820 に答える
14

UITableViewCelliOS 7の のデフォルトの背景色は白です。

backgroundColorコードのどこかにプロパティを設定する必要があります。たとえば、セルを新しく作成した後に設定します。

cell.backgroundColor = [UIColor clearColor];
于 2013-09-24T09:44:53.157 に答える
13

UITableViewの背景色がクリアに設定されていないために問題が発生したことが実際にわかりました。UITableViewCell の背景色をクリアに変更してもまだ白が表示される場合は、UITableView の背景色がクリア (または任意の色) に設定されていることを確認してください。

[self.tableView setBackgroundView:nil];
[self.tableView setBackgroundColor:[UIColor clearColor]];

スイフトで

tableView.backgroundView = nil
tableView.backgroundColor = UIColor.clearColor()
于 2013-11-15T04:12:12.943 に答える
3

上記のいずれも、XCode 5.1.1、iOS 7.1 から機能しないことがわかりました。

プロトタイプ セルで Interface Builder を使用している場合は、プロトタイプ セルを選択し、[ビュー] セクションの属性セレクターから [背景] フォームのデフォルトを [クリア カラー] に変更します。

ここに画像の説明を入力

これはうまくいくようです。上記のコード変更も必要ありません。これは純粋な IB ソリューションです。

于 2014-08-18T20:13:53.087 に答える
2

私にとっては、設定する かcell.backgroundColor = cell.contentView.backgroundColor; 、仕事をしました。tableView:willDisplayCell:forRowAtIndexPath:tableView:cell:forRowAtIndexPath:

これは、必要に応じて Interface Builder で contentView の背景色を設定したためです。

于 2015-11-02T13:01:55.147 に答える
2

Swift 1.2 ソリューション:

次のように、セルの背景色の明示的な定義を追加するだけです。

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    // Configure the cell...
    cell.backgroundColor = UIColor.clearColor()

    return cell
}
于 2015-05-12T23:36:44.983 に答える
2

受け入れられた回答では、問題は解決しませんでした。私はこれをしなければなりませんでした:

  1. インターフェイス ビルダーで、テーブル ビューを選択します。次に、属性インスペクターの[ビュー]セクションで、背景を透明 (不透明度 0%) に設定します。

ここに画像の説明を入力

  1. テーブルのデータ ソース クラス cellForRowAtIndexPath メソッドから:

    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
        reuseIdentifier:CellIdentifier];
    cell.backgroundColor = [UIColor clearColor]; //Make cell transparent
    
于 2013-10-28T16:36:29.133 に答える
1

同様の問題があり、しなければならなかった

  1. 青を selectionStyle として設定し、
  2. これをコードに追加して修正します

    override func tableView(tableView: UITableView, shouldHighlightRowAtIndexPath indexPath: NSIndexPath) -> Bool {
    
      var bgColorView: UIView = UIView()
      bgColorView.backgroundColor = UIColor(red: (76.0 / 255.0), green: (161.0 / 255.0), blue: (255.0 / 255.0), alpha: 1.0)
      bgColorView.layer.masksToBounds = true
      tableView.cellForRowAtIndexPath(indexPath)!.selectedBackgroundView = bgColorView
      return true
    }
    
于 2016-04-29T09:45:07.400 に答える