Şeffaf bir arka plan ile bir Uıtableviewcell nasıl oluşturulur

bir UITableViewCell arka plan rengini şeffaf olarak ayarlamaya çalışıyorum. Ama hiçbir şey işe yaramıyor. tableViewCell içinde bazı görüntüler / düğmeler var ve görüntüler ve düğmeler için 'yüzen' bir etki elde etmek için beyaz grouptableview arka planını yok etmek istiyorum (sanki tableview içinde değil gibi ).

bunun nasıl başarılabileceğine dair bir fikrin var mı?

68
tarihinde sordu Robert 2009-06-17 20:43:55
kaynak

9 ответов

her iki seçenek de işe yaramazsa

UIView *backView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
backView.backgroundColor = [UIColor clearColor];
cell.backgroundView = backView;
122
cevap Ron Srebro 2009-06-18 04:13:27
kaynak

Bu aslında uıtableviewcell dokümanlarında cevaplanır. Bu nedenle, kontrollerinizde şeffaflığı ayarlamak zorunda kalırken, gerçek hücre arka plan rengi , olmalıdır.

'151900920" "Not: Eğer (UİView tarafından bildirilen backgroundColor özelliği ile bir hücrenin arka plan rengini ayarlayarak) bir hücrenin arka plan rengini değiştirmek istiyorsanız tableView yapmak gerekir:willDisplayCell:forRowAtİndexPath: yöntem temsilci ve tableView:cellforrowatındexpath: veri kaynağının değil. Grup stili tablo görünümündeki hücrelerin arka plan renklerindeki değişiklikler, işletim sisteminin önceki sürümlerinden farklı olan iOS 3.0'da bir etkiye sahiptir. Şimdi bunun dışında alan yerine yuvarlak dikdörtgen içindeki alanı etkiler."

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

42
cevap logancautrell 2017-06-29 18:51:22
kaynak

arka plan rengini doğru bir şekilde ayarlamak için bu makalelerle başlayın:

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/

sonra aşağıdaki satırları deneyin:

[[cell contentView] setBackgroundColor:[UIColor clearColor]];
[[cell backgroundView] setBackgroundColor:[UIColor clearColor]];
[cell setBackgroundColor:[UIColor clearColor]];

var bir UİTableViewCell saklanıyor sadece bir görünüm daha. Bu, hepsini yoluna koymalı.

30
cevap Corey Floyd 2011-03-25 15:11:27
kaynak
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{

    cell.backgroundColor = [UIColor clearColor];
    cell.backgroundView.backgroundColor = [UIColor clearColor];
}
25
cevap iomar 2012-10-06 02:12:52
kaynak

basit bir çözüm var

Objective-c sürüm:

cell.backgroundColor = [UIColor clearColor];

Swift sürüm:

cell.backgroundColor = UIColor.clearColor()
19
cevap Muhammad Aamir Ali 2014-12-14 20:27:10
kaynak

varsayılan olarak uıtableviewcell arka plan beyazdır. myCell.backgroundColor = [UIColor clearColor]; yapmak, Uıtableviewcell şeffaf hale getirecek ancak uıtableview (uıtableviewcell contener) varsayılan olarak beyaz bir arka plana sahip olduğu için farkı hissetmeyeceksiniz.

uıview arka planınızı görmek istiyorsanız, hücrenizi ve masa arka planınızı şeffaf hale getirmeniz gerekecek:

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

Martin Magakian

11
cevap Martin Magakian 2014-02-28 18:21:00
kaynak

storyboard'ları kullanıyorsanız, prototip uıtableviewcells

için "opak" işaretini kaldırdığınızdan emin olun
3
cevap Adrian Harris Crowne 2014-10-24 22:01:06
kaynak

benim özel tableviewcell backgroundimage beyaz etiket arka plan ile kaplanmış bir sorun vardı, ben her şeyi denedim ve nihayet viewWillAppear rengini temizlemek için arka plan ayarı hile yaptı.

      - (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
    }

ve rowForCellAtİndexPath arka plan görüntüsünü ayarladım:

 if(!cell) {
    cell = [[[UITableViewCell alloc] initWithFrame: ...
    UIImageView *cellBG = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"cellbg.jpg"]];
    [cell setBackgroundView:cellBG];
    [cellBG release];
}
2
cevap texmex5 2009-07-27 10:42:48
kaynak

İşte Swift 4.1'de çözümüm:

override func viewDidLoad() {
    super.viewDidLoad()
    tableView.backgroundView = UIImageView(image: "Image")
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    cell.backgroundColor = UIColor.clear
{
0
cevap Erik Olson 2018-06-13 02:13:06
kaynak

Diğer sorular cocoa-touch uitableview iphone