から継承するカスタム テーブル ビュー セル クラスを実装しましたUITableViewCell
。テーブルビューには背景画像が含まれているので、セルの背景を透明にしたい。iOS7より前は見栄えがします。
ただし、iOS7 では、セルは常に白い背景で表示されます。
Xcode7、2015 の場合でも、ストーリーボードにバグがあります。コードでセルの背景色を設定する必要があります。
から継承するカスタム テーブル ビュー セル クラスを実装しましたUITableViewCell
。テーブルビューには背景画像が含まれているので、セルの背景を透明にしたい。iOS7より前は見栄えがします。
ただし、iOS7 では、セルは常に白い背景で表示されます。
Xcode7、2015 の場合でも、ストーリーボードにバグがあります。コードでセルの背景色を設定する必要があります。
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 を使用すると問題が発生する可能性があります。:)
セルを返す前に、これを cellForRowAtIndexPath メソッドに記述します。
cell.backgroundColor = [UIColor clearColor];
UITableViewCell
iOS 7の のデフォルトの背景色は白です。
backgroundColor
コードのどこかにプロパティを設定する必要があります。たとえば、セルを新しく作成した後に設定します。
cell.backgroundColor = [UIColor clearColor];
UITableViewの背景色がクリアに設定されていないために問題が発生したことが実際にわかりました。UITableViewCell の背景色をクリアに変更してもまだ白が表示される場合は、UITableView の背景色がクリア (または任意の色) に設定されていることを確認してください。
[self.tableView setBackgroundView:nil];
[self.tableView setBackgroundColor:[UIColor clearColor]];
スイフトで
tableView.backgroundView = nil
tableView.backgroundColor = UIColor.clearColor()
上記のいずれも、XCode 5.1.1、iOS 7.1 から機能しないことがわかりました。
プロトタイプ セルで Interface Builder を使用している場合は、プロトタイプ セルを選択し、[ビュー] セクションの属性セレクターから [背景] フォームのデフォルトを [クリア カラー] に変更します。
これはうまくいくようです。上記のコード変更も必要ありません。これは純粋な IB ソリューションです。
私にとっては、設定する
かcell.backgroundColor = cell.contentView.backgroundColor;
、仕事をしました。tableView:willDisplayCell:forRowAtIndexPath:
tableView:cell:forRowAtIndexPath:
これは、必要に応じて Interface Builder で contentView の背景色を設定したためです。
Swift 1.2 ソリューション:
次のように、セルの背景色の明示的な定義を追加するだけです。
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
// Configure the cell...
cell.backgroundColor = UIColor.clearColor()
return cell
}
受け入れられた回答では、問題は解決しませんでした。私はこれをしなければなりませんでした:
テーブルのデータ ソース クラス cellForRowAtIndexPath メソッドから:
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier];
cell.backgroundColor = [UIColor clearColor]; //Make cell transparent
同様の問題があり、しなければならなかった
これをコードに追加して修正します
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
}