2015-04-27 16 views
5

Belirli bir hücrenin seçilip seçilmediğini kontrol eden bir tablo görüntüleme temsilcisine sahibim. Değilse, seçim iptal edilir. kullanıcıya görsel geribildirim vermek amacıyla kırmızı bu hücrenin bir etiket boya istiyor ve kısa bir süre sonra siyah geri boyamak:Animasyon içinde willSelectRowAtIndexPatifikasyondan sonra tekrar

- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (true) {     // Some simplification 
     MyTableViewCell cell = ... // The correct cell is loaded here 
     [UIView animateWithDuration:0.5 animations:^{ 
      cellToSelect.labelAmount.textColor = [UIColor redColor]; 
     } completion:^(BOOL finished) { 
      [UIView animateWithDuration:1.0 animations:^{ 
       cellToSelect.labelAmount.textColor = [UIColor blackColor]; 
      }]; 
     }]; 
     return nil; 
    } 
    return indexPath; 
} 

animasyonlar gerçekleştirilmez. Bunun yerine, hücre sadece (görsel olarak) seçilmemiş.

DÜZENLEME: Önerilen çözümleri denedim ve işe yaramadı. Bu yüzden biraz daha kazılırken ben animasyonlar yapmak ancak hücre içinde herhangi bir etiket textColor değiştirmek mümkün değilim ki öğrendim: çalışmayan bir renkli atfedilen dizesi yoluyla renk ayarı, aynı zamanda

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    MyTableViewCell cell = ... 
    cell.labelAmount.textColor = [UIColor redColor]; 
    // Now, although the property was set (as I can see in the debugger) 
    // the label is still drawn with standard black text. 
} 

.

Diğer taraftan, highlightedTextColor değişikliği buna göre sunulmuştur. Yani bu işe yarıyor.

+0

Eğer 'MyTableViewCell hücresi = ... // doğru hücre burada hücreyi yüklemek here' yüklenmiş olduğundan emin misin kullanın? "CellForRowAtIndexPath" yöntemi genellikle kullanılır, ancak bu hücre ekranda görünmüyorsa hiçbir hücre döndürmez. – pteofil

cevap

1

tüm can veremezler elma belgelerine Uyumlu İstediğiniz:

UIView sınıfın aşağıdaki özellikleri canlandırılabilir:

  • @property çerçeve
  • elma itibaren

  • @property sınırları
  • @property center
  • dönüşümü @property
  • @property alfa
  • @property backgroundColor
  • @property contentStretch

Şimdi bu ne istediğini animasyon uygulamak için bir hile: Mesela

, set için alfa - görünüme hiçbir görsel değişiklik yapılmayacak ancak animasyonun başlatılacağı

- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (true) {     // Some simplification 
     MyTableViewCell cell = ... // The correct cell is loaded here 
     [UIView animateWithDuration:0.5 animations:^{ 

      //here the trick set alpha to 1 
      self.view.alpha = 1; 

      cellToSelect.labelAmount.textColor = [UIColor redColor]; 
     } completion:^(BOOL finished) { 
      [UIView animateWithDuration:1.0 animations:^{ 
       cellToSelect.labelAmount.textColor = [UIColor blackColor]; 
      }]; 
     }]; 
     return nil; 
    } 
    return indexPath; 
} 
+0

Aslında bu çözüm bir şey değiştirmiyor, yine de: Animasyon gerçekleştirilemiyor ve UI öğeleri farklı şekilde renklendirilmiyor ("backgroundColor" ve "5" animasyon süresi gibi özellikler için değil). – Bastian

+0

Bu yüzden, başarı durumunu canlandırmayı denediğimde ne olacağını kontrol ettim: Sıra, herhangi bir görsel cazibe olmadan seçildi ... => Bu yaklaşım ayrıca indexPath's! = Nil için de çalışmıyor. – Bastian

+0

´didSelectRowAtIndexPath´ta deneyin daha iyi olabilir. Yazdığım için üzgünüm iPhone'um fr yazmak istiyor. – MacKentoch

3

Bu emlak - textColor - hayali bir model değildir. transitionWithView:duration:options:animations:completion:

[UIView transitionWithView:label duration:0.5 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{ 
    label.textColor = [UIColor redColor]; 
} completion:^(BOOL finished) { 
    [UIView transitionWithView:label duration:1.0 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{ 
     label.textColor = [UIColor blackColor]; 
    } completion:nil]; 
}]; 
İlgili konular