2013-04-21 1 views
1

Я не знаю, правильно ли я думаю или нет, но в моей проблеме, что у меня есть пользовательские ячейки (которые выглядят как автомобили) в UITableView, каждая ячейка содержит 2 UIImageViews (колесо изображения), мне нужно поворачивать изображения колес, когда UITableView прокручивается либо вниз, так что я могу указать все образы колес на одно изображение, а затем повернуть это изображение сразу же при прокрутке UITableView?Сделать все UIImageViews ориентированными на Static 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

Я считаю, что вы не можете так поступать. Вам нужно позвонить reloadData для вашего UITableView от scrollViewDidScroll метода. Вызов reloadData вызовет cellForRawAtIndexMethod, и там в этом методе вы должны обновить преобразование ваших колес для каждой ячейки соответственно текущему смещению.

+0

Thnx Andery для ответа, но возможно, ваше решение вызовет проблемы с производительностью, и прокрутка зависает (я не уверен, но я думаю это). Я нашел другое решение, и я опубликовал его, любезно скажите мне свою обратную связь –

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; 
     } 
    } 
} 
Смежные вопросы