У меня есть подкласс UITableViewCell
, который рисует в методе drawRect :. На заказ рисуется весь прямоугольник, включая фон. Мне удалось получить очень сложные ячейки, сохраняя при этом очень плавную прокрутку.
Моя проблема: я вызываю [table deselectRowAtIndexPath:path animated:YES];
всякий раз, когда появляется представление, чтобы соответствовать требованиям Apple HIG. Однако анимации не происходит. Это работало, когда у меня было настраиваемое представление (созданное с помощью подпредставлений), которое было прозрачным (так что фон 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];
}
}
Это отлично работает, если на экране отображается таблица. Но если я возвращаюсь к табличному представлению из навигации (назад), вместо того, чтобы плавно переходить от выбранного к невыбранному, он исчезает с невидимого до невыбранного. Что может вызвать это?
setSelected:animated:
в вашемUITableViewCell
подклассе? - person Ole Begemann   schedule 21.10.2010