UITableViewCell
の背景色を透明に設定しようとしています。しかし、何もうまくいかないようです。 tableViewCell
の中にいくつかの画像/ボタンがあり、白いgrouptableview
背景を非表示にして、画像とボタンの「フローティング」効果を取得します(あたかもそれらが内部にないかのように) tableview
)。
これをどのように達成できるか考えていますか?
他のオプションの両方が機能しなかった場合は、これを試してください
UIView *backView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
backView.backgroundColor = [UIColor clearColor];
cell.backgroundView = backView;
これは、UITableViewCellのドキュメントで実際に回答されています。したがって、コントロールに透明度を設定する必要がありますが、実際のセルの背景色を以下で設定する必要があります。
「注:セルの背景色を変更する場合(UIViewによって宣言されたbackgroundColorプロパティを介してセルの背景色を設定することにより)、デリゲートではなくtableView:willDisplayCell:forRowAtIndexPath:メソッドで行う必要があります。 tableView:cellForRowAtIndexPath:データソースのグループスタイルのテーブルビューでセルの背景色を変更すると、iOS 3.0で以前のバージョンのオペレーティングシステムとは異なる効果があり、代わりに角丸長方形内の領域に影響します。それの外側の領域の。」
https://developer.Apple.com/documentation/uikit/uitableviewcell
背景色を正しく設定するには、次の記事から始めてください。
http://pessoal.org/blog/2009/02/25/customizing-the-background-border-colors-of-a-uitableview/
次に、次のすべての行を試してください。
[[cell contentView] setBackgroundColor:[UIColor clearColor]];
[[cell backgroundView] setBackgroundColor:[UIColor clearColor]];
[cell setBackgroundColor:[UIColor clearColor]];
UITableViewCellには複数のビューが隠れています。これにより、すべての方法が明確になります。
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
cell.backgroundColor = [UIColor clearColor];
cell.backgroundView.backgroundColor = [UIColor clearColor];
}
簡単な解決策があります
Objective-cバージョン:
cell.backgroundColor = [UIColor clearColor];
Swiftバージョン:
cell.backgroundColor = UIColor.clearColor()
デフォルトでは、UITableViewCellの背景は白です。 myCell.backgroundColor = [UIColor clearColor];
はUITableViewCellを透明にしますが、UITableView(UITableViewCellのコンポーネント)もデフォルトで白い背景を持つため、違いは感じません。
UIViewの背景を見たい場合は、セルとテーブルの背景を透明にする必要があります。
myTableView.backgroundColor = [UIColor clearColor];
myTableCell.backgroundColor = [UIColor clearColor];
マーティン・マガキアン
ストーリーボードを使用している場合、プロトタイプUITableViewCellsの「不透明」のチェックを外してください。
カスタムtableviewcell backgroundimageに白いラベルの背景がオーバーレイされるという問題がありました。すべてを試し、最後にviewWillAppearで背景をクリアカラーに設定しました。
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
self.tableView.backgroundColor = [UIColor clearColor]; // if this is not here, cell background image is covered with a white rectangle :S
}
そして、rowForCellAtIndexPathで背景画像を設定します:
if(!cell) {
cell = [[[UITableViewCell alloc] initWithFrame: ...
UIImageView *cellBG = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"cellbg.jpg"]];
[cell setBackgroundView:cellBG];
[cellBG release];
}
3つのステップがあります。