2013-04-21 25 views
1

我不知道我是否正確思考,但我的問題是我在UITableView中定製單元格(它看起來像一輛汽車),每個單元格包含2個UIImageViews(車輪圖像),當UITableView向上滾動時,我需要旋轉輪子圖像,所以我可以將所有輪子圖像指向一個圖像,然後在UITableView滾動時立即旋轉此圖像?使所有UIImageView指向靜態UIImageView

這是我的代碼

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{ 

    CGPoint currentOffset = scrollView.contentOffset; 
    if (currentOffset.y > self.lastContentOffset.y) 
    { 
     self.wheelImage.transform = CGAffineTransformRotate(self.wheelImage.transform,- M_PI/4); 
    } 
    else 
    { 
     self.wheelImage.transform = CGAffineTransformRotate(self.wheelImage.transform, M_PI/4); 
    } 
    self.lastContentOffset = currentOffset; 
} 

對不起我的英文不好,並在此先感謝。

回答

0

我相信你不能這樣做。你需要的是從方法爲UITableView撥打reloadData。調用reloadData將調用cellForRawAtIndexMethod,並且在那種方法中,您應該根據當前偏移量更新每個單元的輪子變換。

+0

日Thnx Andery您的答覆,但也許你的解決方案會造成性能問題,滾動會掛起(我不確定,但我認爲這一點)。我找到了另一個解決方案,並且發佈了,請告訴我您的反饋 – 2013-04-21 13:06:39

1

這裏是最好的答案,我發現到現在,這是工作得很好,但我需要使其更逼真(應用物理公式):

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{ 

    int fragment = 20; 
    for(UITableViewCell *cell in [self.showsTable visibleCells]){ 

     if ([cell isKindOfClass:[ShowCell class]]){ 

      CGPoint currentOffset = scrollView.contentOffset; 

      if (currentOffset.y > self.lastContentOffset.y){ 

       [[(ShowCell*)cell wheel1Image] setTransform:CGAffineTransformRotate([(ShowCell*)cell wheel1Image].transform, M_PI/fragment)]; 
       [[(ShowCell*)cell wheel2Image] setTransform:CGAffineTransformRotate([(ShowCell*)cell wheel2Image].transform, M_PI/fragment)]; 
      } 
      else{ 

       [[(ShowCell*)cell wheel1Image] setTransform:CGAffineTransformRotate([(ShowCell*)cell wheel1Image].transform,- M_PI/fragment)]; 
       [[(ShowCell*)cell wheel2Image] setTransform:CGAffineTransformRotate([(ShowCell*)cell wheel2Image].transform,- M_PI/fragment)]; 
      } 
      self.lastContentOffset = currentOffset; 
     } 
    } 
}