2012-02-03 28 views
6

2 bölümlü bir UITableview, 1. bölümde 1 satır ve ikinci bölüm için değişken bir satır sayısı var. Kullanıcı masaüstünü yukarı kaydırdığında (parmak yukarı doğru hareket eder), o zaman tablo görünümü varsayılan şeydir, ancak kullanıcı uitableview'in üstündeyken ve aşağı doğru kayarken (aşağı doğru hareket eden parmak) o zaman ilk hücreye benzemelidir. İlk bölüm yüksekliği, kullanıcı aşağı doğru kayarken artar (ve dokunuş serbest bırakıldığında, satırın yüksekliğini orijinal 100'e kadar değiştirir). Ben Bir uitableviewcell satır yüksekliğini kaydırırken bir uitableviewcell satır yüksekliğini değiştirme

-(void)scrollViewDidScroll:(UIScrollView*)scrollView{ 
    if(scrollView.contentOffset.y < 0){ 
     [mainTable reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:0 inSection: 0]] withRowAnimation:UITableViewRowAnimationNone]; 
    } 
} 

-(CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath{ 
    if(indexPath.section == 0 && tableView.contentOffset.y < 0){ 
     return -tableView.contentOffset.y+100;//Default height is 100 
    } 
} 

çalıştı ama ben aşağı çektiğinde yüzden tableview sadece teklediği reloadRows yöntem 0'a contentOffset sıfırlar. Bu işe yaramıyor gibi görünüyor, o zaman bir UIScrollView her şeyi yazmak zorunda kalacağım ve geri dönüşümlü hücreler olmadan büyük bir acı gibi görünüyor.

Herhangi bir önerisi olan var mı?

cevap

9

Satırı yeniden yüklemenize gerek yok, sadece çerçeveyi doğrudan değiştirdim. Cell.layer.masksToBounds = YES ayarını yaptığınızdan emin olun ve hücrede altView'lerin orijinal hücre boyundan daha büyük olmasını sağlayın.

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{ 
    if (mainTable.contentOffset.y < 0) { 
     UITableViewCell *cell = [mainTable cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]]; 
     float rawr = mainTable.contentOffset.y; 
     cell.frame = CGRectMake(cell.frame.origin.x, rawr, cell.frame.size.width, 100-rawr); 
    } 
} 
İlgili konular