2013-12-08 23 views
6

animasyon yaparken arka plan yanıp sönen ben özel bir arka plan rengi ile bir UIViewController var. Üstte, yarı saydam (0,50 ile opaklık beyaz) olan UITableViewCells ile bir UITableView var.Şeffaf UITableViewCell

Kafamı duvara karşı vurduğum bir konuyla ilgili olarak endişeleniyorum ve IOS 7'de, yarı saydam arka plana sahip bir UITableViewCell kodunuz varsa ve satırları/satırları/satırları silmeye çalıştığınızda daha şeffaf bir sadece 0.1 saniye ve set hücreleri arka plan yanıp söner) bir animasyon etkisi üzerindeki hücreler ile tüm UITableView güvenerek. Bu çok sinir bozucu.

Birlikte self.view arka plan rengini ayarlanır yapmamın tek şey:

self.view.backgroundColor = [UIColor colorWithRed:0.4 green:0.5 blue:0.7 alpha:1]; 

ile hücrelerin arka plan rengini ayarlamak: Burada

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    cell.backgroundColor = [UIColor colorWithWhite:1 alpha:0.5]; 
} 

bir gif size sorunu gösteriyor :

enter image description here

Ve o süper basit bir proje re: https://github.com/socksz/TransparentCellFlashing

bana bu ridicolous sorunu çözmek için yardım edin! : P

+0

senin UITableView arka plan rengi nedir? Bir tane ayarladıysanız, bunu xib/storyboard'unuzda "temizle" (veya seçtiğiniz herhangi bir renk) olarak ayarlamayı deneyin. Normalde iOS7'de, bu sorunların çoğunun sebebi olan "varsayılan" olarak ayarlanır. –

+0

Önemli değil gibi görünüyor. I [UIColor clearColor] '' için (tablo görünüşüdür) self.view' 'arka plan rengini ayarlamak için güvenilir ve aynı zamada kontrol biriminin bir 'UIView' (ana görünümünde Tablo görünümünü gömmek çalıştık) ve temizlemek için bu görünümün arka plan rengini ayarlayın. Çalışmıyor. –

+0

Oh Tamam. O zaman muhtemelen alt sınıflarını kullanarak UITableViewCell'in setSelected() özelliğini geçersiz kılmanız gerekir. Veya en azından backgroundColor yerine backgroundView özelliğini kullanın. –

cevap

11
  1. ('gibi: CustomCell) UITableViewCell bir alt sınıfı oluşturmak ve CustomCell.m yöntemini geçersiz:

    - (id)initWithCoder:(NSCoder *)aDecoder{ 
        self = [super initWithCoder:aDecoder]; 
        if(self){ 
         // Initialization code 
         [self setBackgroundColor:[UIColor clearColor]]; 
         UIView * bgView = [[UIView alloc] initWithFrame:self.frame]; 
         [bgView setBackgroundColor:[UIColor colorWithWhite:1 alpha:0.5]]; 
         [self addSubview:bgView]; 
        } 
        return self; 
    } 
    
  2. - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
        cell.backgroundColor = [UIColor colorWithWhite:1 alpha:0.5]; 
    } 
    
    MasterViewController.m

    içinde willDisplayCell yöntemini kaldırma
  3. cellForRowAtIndexPath yöntemini MasterViewController.m olarak değiştirin

Sadece bir deneyin

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath]; 
    [self configureCell:cell atIndexPath:indexPath]; 
    return cell; 
} 
  • Değişim film şeridi yılında hücrenin sınıf tipi: D

    enter image description here

  • +1

    Seni seviyorum! Parıldayan bir cazibe gibi çalışır. Neden özel bir görünümü arka plan görünümü olarak eklememiz gerekiyor?Belki de 'UITableViewCell' 'backgroundView' ve 'backgroundColor' özellikleri bu şekilde çalışır ve bu davranışı değiştirmek için hiçbir şey yapamayız? Teşekkürler dostum! Not: Ayrıca GIF :-) için +1 –

    +1

    Sadece hücre arka planView veya backgroundColor.Actually ayarlamak iOS6 iyi çalışıyor, iOS7 güncellenirken neden yanıp sönen hücreler tam olarak emin değilim ...: D – Joiningss

    +0

    Yea, muhtemelen iOS 7. Yine de tekrar teşekkür ederim. –