Протокол CAMediaTiming
определяет свойство timeOffset
, которое должно установить дополнительное смещение времени анимационного или анимированного слоя. Установив layer.speed = 0
, можно вручную управлять временем анимации, установив layer.timeOffset
на заданное значение.Невозможно управлять временем анимации подслоя UITableViewCell
И мне удалось сделать это в обычном режиме просмотра, однако, когда я пытаюсь сделать это (установленное смещение по времени слоя), когда слой является потомком слоя UITableViewCell в это не имеет никакого эффекта.
Вот быстрый фрагмент, чтобы вы могли видеть, чего я пытаюсь достичь, а что - нет.
-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
[tableView deselectRowAtIndexPath:indexPath animated:NO];
CALayer *layer = [CALayer layer];
layer.frame = CGRectMake(0, 0, 80, 80);
layer.backgroundColor = [UIColor redColor].CGColor;
layer.opacity = .1f;
[cell.contentView.layer addSublayer:layer];
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"opacity"];
animation.toValue = (id) [NSNumber numberWithFloat:1.f];
animation.duration = 1.f;
[layer addAnimation:animation forKey:nil];
layer.timeOffset = 0.7f;
layer.speed = 0.f;
}
Это только время, когда это не работает, или вы можете рассказать нам больше о том, что происходит? –
Да - все свойства, определенные в работе протокола CAMediaTiming, за исключением 'timeOffset' – wczekalski