web-dev-qa-db-ja.com

背景が透明なUITableViewCellを作成する方法

UITableViewCellの背景色を透明に設定しようとしています。しかし、何もうまくいかないようです。 tableViewCellの中にいくつかの画像/ボタンがあり、白いgrouptableview背景を非表示にして、画像とボタンの「フローティング」効果を取得します(あたかもそれらが内部にないかのように) tableview)。

これをどのように達成できるか考えていますか?

70
levi

他のオプションの両方が機能しなかった場合は、これを試してください

UIView *backView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
backView.backgroundColor = [UIColor clearColor];
cell.backgroundView = backView;
122
Ron Srebro

これは、UITableViewCellのドキュメントで実際に回答されています。したがって、コントロールに透明度を設定する必要がありますが、実際のセルの背景色を以下で設定する必要があります

「注:セルの背景色を変更する場合(UIViewによって宣言されたbackgroundColorプロパティを介してセルの背景色を設定することにより)、デリゲートではなくtableView:willDisplayCell:forRowAtIndexPath:メソッドで行う必要があります。 tableView:cellForRowAtIndexPath:データソースのグループスタイルのテーブルビューでセルの背景色を変更すると、iOS 3.0で以前のバージョンのオペレーティングシステムとは異なる効果があり、代わりに角丸長方形内の領域に影響します。それの外側の領域の。」

https://developer.Apple.com/documentation/uikit/uitableviewcell

42
logancautrell

背景色を正しく設定するには、次の記事から始めてください。

http://howtomakeiphoneapps.com/2009/03/how-to-add-a-Nice-background-image-to-your-grouped-table-view/

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には複数のビューが隠れています。これにより、すべての方法が明確になります。

30
Corey Floyd
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{

    cell.backgroundColor = [UIColor clearColor];
    cell.backgroundView.backgroundColor = [UIColor clearColor];
}
25
iomar

簡単な解決策があります

Objective-cバージョン:

cell.backgroundColor = [UIColor clearColor];

Swiftバージョン:

cell.backgroundColor = UIColor.clearColor()
19

デフォルトでは、UITableViewCellの背景は白です。 myCell.backgroundColor = [UIColor clearColor];はUITableViewCellを透明にしますが、UITableView(UITableViewCellのコンポーネント)もデフォルトで白い背景を持つため、違いは感じません。

UIViewの背景を見たい場合は、セルとテーブルの背景を透明にする必要があります。

myTableView.backgroundColor = [UIColor clearColor];
myTableCell.backgroundColor = [UIColor clearColor];

マーティン・マガキアン

10
Martin Magakian

ストーリーボードを使用している場合、プロトタイプ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];
}
2
texmex5

3つのステップがあります。

  1. cell.contentView.backgroundColor = UIColor.clear
  2. [描画]セクションの属性インスペクターのテーブルビューセルの[不透明]チェックボックスをオフにします。これは、ストーリーボードのテーブルビューセルプロトタイプをクリックして、属性インスペクターを開くと確認できます。下にスクロールすると見つけられます。
  3. 手順2と同じ場所でドロップダウンから背景をクリアカラーとして選択します。
  4. アプリを実行する
0