2015-04-02 20 views
5

Özür bir görünümde bir UITableView ile iki özel UITableViewCell sahip olduğu bir IOS uygulama geliştirme. Tüm bunlar ana hikaye panosu kullanıyor.

Her şey gayet güzel çalışıyor./sadece bir hücreden biri UIView animasyonu karartmak içinde Ama benim uygulamak gerekir tek solma olduğunu. görünümünü hareketlendirmek için bir bu kodu kullanarak

anda Özür: I UITableView arasında tableView:cellForRowAtIndexPath: veri kaynağı yöntemde çağrı, bir "içerik set" yöntemindeUIView animasyon UITableViewCell içinde

[UIView animateWithDuration:1.2 
         delay:0 
        options:UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat | UIViewAnimationOptionCurveEaseInOut animations:^{ 

         self.myView.alpha = 0; 

        } completion:^(BOOL finished) { 

         self.myView.alpha = 1; 

        }]; 

.

animasyonlar Tamam çalışır. Görünümler arasında bir değişiklik olsa bile görünüm hala hareketli. Sorunum tablo görünümünde veya tablo görünümünde verilirse verileri yeniden zaman olduğu yukarı veya aşağı animasyon ile hücre kaybolur ve hücre hiçbir animasyon ile sunulmuştur o an, tekrar görüntülemek için hücreyi yeniden zorundadır kadar.

Burada eksik? Bunu uygulamak için daha iyi bir yolu var mı? Tablo görünümü hücreyi yeniden kullandıktan sonra animasyonu nasıl yeniden başlatabilirim? Bence

benim UI tasarımına göre tek hücreli animasyona sahip getireceğini belirtme önemlidir.

Teşekkürler.

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 

& içindeki ilgili hücrenin ilgili görünümde üzerinde animasyonları gerçekleştirmek -

cevap

12

Sana olan UITableView biri daha delegate yöntemini uygulamak gerektiğini düşünüyorum.

aşağıda yöntem hücre görüntülenir her seferinde adı verilecek

, (ki buna Tableview çerçevesinin dışına çıkarsa ve görünür alana geri gelir) Evet, tha çok yardımcı

-(void) tableView:(UITableView *) tableView willDisplayCell:(UITableViewCell *) cell forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    //row number on which you want to animate your view 
    //row number could be either 0 or 1 as you are creating two cells 
    //suppose you want to animate view on cell at 0 index 
    if(indexPath.row == 0) //check for the 0th index cell 
    { 
     // access the view which you want to animate from it's tag 
     UIView *myView = [cell.contentView viewWithTag:MY_VIEW_TAG]; 

     // apply animation on the accessed view 
     [UIView animateWithDuration:1.2 
         delay:0 
        options:UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat | UIViewAnimationOptionCurveEaseInOut animations:^ 
     { 
        [myView setAlpha:0.0]; 
     } completion:^(BOOL finished) 
     { 
        [myView setAlpha:1.0]; 
     }]; 
    } 
} 
+0

, Teşekkürler!. Yine de reloadData yöntemi gibi bazı durumlarda çalışmaz. Cevabınız ve ayrıca 'tableView: didEndDisplayingCell: forRowAtIndexPath:' yöntemini kullanarak, animasyonu durduracağız çünkü aynı zamanda sorunlara neden oluyor. –

+0

willDisplayCell içinde: bu süre bittikten sonra 1,2 saniye boyunca görüntüyü animasyon yapıyorsanız animasyon otomatik olarak duracaktır, aslında tabloView kullanımını anlamadım: didEndDisplayingCell: forRowAtIndexPath: method. Bunun kullanımını bilmem lazım, lütfen birazcık üzerinize çekebilirsiniz, teşekkürler. –

+0

Animasyonu görünümden kaldırmak için kullanıyorum çünkü animasyonun kesilmesi durumunda yeniden başlatılmayacağını anladım. –

İlgili konular