У меня есть подкласс UITableViewCell
, который рисует в методе drawRect :. Целый прямоугольник нарисован на заказ, включая фон.
Мне удалось получить очень сложные клетки, при этом прокрутка была очень плавной.
Моя проблема: я звоню [table deselectRowAtIndexPath:path animated:YES];
всякий раз, когда появляется вид, чтобы соответствовать HIG от Apple. Однако никакой анимации не происходит. Это работало, когда у меня был собственный вид (созданный с подпредставлениями), который был прозрачным (поэтому фон Apple будет отображаться ниже), конечно. Теперь это не так.
Мой drawRect: вызывается один раз в течение "времени анимации", примерно на полпути. Я думаю, что это происходит, потому что он анимирует выделенное свойство ячейки от 1 до 0 и привязывается к 0, когда падает ниже 0,5.
Как я могу оживить этот переход? Мое предположение было бы использовать обычные beginAnimations: и т. Д. И анимировать настраиваемое поле с плавающей запятой в моем объекте ячейки от 1 до 0. Будет ли это вызывать drawRect:
повторно для анимации?
Обновление
Мне удалось заставить это почти работать. Я переопределил setSelected: animated: вот так:
- (void) setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:NO];
if (animated) {
[CATransaction begin];
CATransition* animation = [CATransition animation];
animation.type = kCATransitionFade;
animation.duration = 0.6;
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[view.layer addAnimation:animation forKey:@"deselectRow"];
[CATransaction commit];
}
}
Это прекрасно работает, если представление таблицы на экране. Но если я возвращаюсь к табличному представлению из навигации (назад), вместо того, чтобы переходить от выбранного к не выбранному, он превращается из невидимого в не выбранное. Что может вызвать это?