回答:
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を使用する場合、何か問題があるかもしれません。:)
tableView:cellForRowAtIndexPath:
メソッドでこれを行うこともできます。
少し調べてみると、セルのbackgroundColorがAppearanceシステムによって設定されていることがわかりました。したがって、アプリケーションのすべてのセルの背景が明確な場合、最も簡単な解決策は次のとおりです。
[[UITableViewCell appearance] setBackgroundColor:[UIColor clearColor]];
また、背景が異なっていても、デフォルトではクリアカラーが一番便利なようです。
UITableViewCell
のを、私はにBGの色を設定する初期化子でスーパークラスを提供することは問題ではなかったのでclearColor
、しかし、何を思いますか?それはうまくいきませんでした...つまり、なぜ、APPLE?
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()
これは間違いなくiOSのバグです。iOS 8では、Interface Builder
iPhoneの背景色の設定は問題なく機能しますが、iPadでは常に機能しwhiteColor
ます。これを修正するには、cellForIndexPath
データソースメッセージで次のように記述します。
cell.backgroundColor = cell.backgroundColor
そしてそれはうまくいきます。これがまさに、コード自体がほとんどbullsh * tであるためバグであると私が言った理由ですが、機能します。
UITableViewCellがデフォルトで選択されている可能性があります。Xcode6の新しいビジュアルデバッガーを使用してこれを確認できます(または、この白いセルが表示される原因となっているビューを正確に特定します)。
興味深いことに、これを知った後、選択したセルの背景色をクリアに設定してもまだ動作しませんでした。さらに調査を行ったところ、このカスタムセルを作成するときに、選択スタイルを変更する必要があることがわかりました。
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// do customization here
}
self.selectionStyle = UITableViewCellSelectionStyleNone;
[self setBackgroundColor:[UIColor clearColor]];
return self;
}
受け入れられた答えは私にとって問題を解決しませんでした。私はこれをしなければなりませんでした:
テーブルのデータソースクラスのcellForRowAtIndexPathメソッドから:
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier];
cell.backgroundColor = [UIColor clearColor]; //Make cell transparent
cell = [tableView dequeueReusableCellWithIdentifier:<#Reuse ID#> forIndexPath:indexPath]
。以前のバージョンでは、indexPath引数を削除してからnilをテストinitWithStyle:reuseIdentifier
し、nilの場合はコードスニペットに従ってインスタンス化しました。
セルにUIオブジェクトを追加すると、Xcode 5 / IOS 7は新しい「コンテンツビュー」を追加します。これは、セル内のすべての要素のスーパービューになります。セルの背景色を設定するには、このコンテンツビューの背景色を設定します。上記の解決策は私にとってはうまくいきませんでしたが、これは私にとってはうまくいきました。
Swift 1.2ソリューション:
次のように、セルの背景色の明示的な定義を追加するだけです。
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
// Configure the cell...
cell.backgroundColor = UIColor.clearColor()
return cell
}
同様の問題があり、
これをコードに追加して修正します
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
}
UITableViewセルを有利にするために、カラーコードを使用することもできます。
[cell setBackgroundColor:[self colorWithHexString:@"1fbbff"]];
これは、カラーコードメソッドを適用するためのコードです。
-(UIColor*)colorWithHexString:(NSString*)hex
{
NSString *cString = [[hex stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];
if ([cString length] < 6) return [UIColor grayColor];
if ([cString hasPrefix:@"0X"]) cString = [cString substringFromIndex:2];
if ([cString length] != 6) return [UIColor grayColor];
NSRange range;
range.location = 0;
range.length = 2;
NSString *rString = [cString substringWithRange:range];
range.location = 2;
NSString *gString = [cString substringWithRange:range];
range.location = 4;
NSString *bString = [cString substringWithRange:range];
unsigned int r, g, b;
[[NSScanner scannerWithString:rString] scanHexInt:&r];
[[NSScanner scannerWithString:gString] scanHexInt:&g];
[[NSScanner scannerWithString:bString] scanHexInt:&b];
return [UIColor colorWithRed:((float) r / 255.0f)
green:((float) g / 255.0f)
blue:((float) b / 255.0f)
alpha:1.0f];
}