2012-02-10 2 views
0

Мне нужно создать таблицу, в которой есть вращающаяся кнопка в каждой ячейке.вращающаяся кнопка в uitableviewcell

Вот мой класс CustomCell метод анимации

- (void)animateButton { 
__block CustomCell *block_button = self; 
void (^animationBlock)(void) = ^(void) { 
block_button.downloadBackButton.transform = 
    CGAffineTransformMakeRotation(M_PI * 2/3); 
}; 

[UIView animateWithDuration:3.0 
         delay:0.0 
        options:UIViewAnimationOptionRepeat|UIViewAnimationOptionCurveLinear 
       animations:animationBlock 
       completion:nil];} 

И мой CustomTableViewController cellForRowAtIndexPath: метод:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
static NSString *CellIdentifier = @"cell"; 

FAMasterTableCell *cell = (CustomCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil]; 
    cell = (CustomCell *) [nib objectAtIndex:0]; 
} 
    [cell animateButton]; 
return cell; 

}

Проблема заключается в том, что вид таблицы рывками на IPOD, но работает нормально на iPhone 4s.

Любые предложения?

ответ

0

Вы пытались использовать анимацию, уже связанную с ячейкой, вместо того, чтобы добавлять новую анимацию каждый раз?

FAMasterTableCell *cell = (CustomCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil]; 
    cell = (CustomCell *) [nib objectAtIndex:0]; 
    [cell animateButton]; 
} 
return cell; 

Возможно, вы также захотите использовать CAAnimations вместо использования анимаций UIView. Я считаю, что анимация слоя вместо представления повысит производительность.

+1

Анимации UIView не должны быть намного медленнее, чем прямые CABasicAnimations. UIViews - это просто облегченные обертки вокруг CALayers, и я заметил незначительную разницу в производительности в анимации одного и другого в моих тестах даже на самом старом iOS-оборудовании. –

+0

Очень хорошая информация, я не понимал, что это просто облегченные обертки. –

+0

Да, это не похоже на NSViews на Mac, у которых намного больше багажа. Одна из первых вещей, которые я делал в бета-версии iPhone SDK, - это посмотреть на производительность UIView, и она была очень впечатлена. Я делаю некоторые вещи в сырых CALayers, но в основном это для кросс-платформенного кода Mac/iOS (как в Core Plot). UIKit был четко построен с Core Animation как одна из его основ. –

Смежные вопросы