2013-04-21 41 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; 
     } 
    } 
}