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

ю, что shadowPath CALayer можно анимировать только с помощью явной анимации, однако я до сих пор не могу заставить это работать. Я подозреваю, что я не передаюtoValue правильно - как я понимаю, это должно бытьid, но свойство принимает CGPathRef. Хранить это вUIBezierPath не похоже на работу. Я использую следующий код для проверки:

CABasicAnimation *theAnimation = [CABasicAnimation animationWithKeyPath:@"shadowPath"];
theAnimation.duration = 3.0;
theAnimation.toValue = [UIBezierPath bezierPathWithRect:CGRectMake(-10.0, -10.0, 50.0, 50.0)];
[self.view.layer addAnimation:theAnimation forKey:@"animateShadowPath"];

(Я использую минус значения, чтобы гарантировать, что тень выходит за пределы вида, лежащего поверх него ... слояmasksToBounds свойство установлено вNO).

Как достигается анимация shadowPath?

ОБНОВИТЬ

проблемаоколо решена. К сожалению, главной проблемой была несколько небрежная ошибка ...

Ошибка, которую я сделал, состояла в том, чтобы добавить анимацию к корневому слою контроллера представления, а не к слою, который я выделил для тени. Кроме того, @ pe8ter был прав в том, чтоtoValue должен бытьCGPathRef приведение кid (очевидно, когда я попробовал это раньше, у меня все еще не было анимации из-за неправильной ошибки слоя). Анимация работает со следующим кодом:

CABasicAnimation *theAnimation = [CABasicAnimation animationWithKeyPath:@"shadowPath"];
theAnimation.duration = 3.0;
theAnimation.toValue = (id)[UIBezierPath bezierPathWithRect:myRect].CGPath;
[controller.shadowLayer addAnimation:theAnimation forKey:@"shadowPath"];

Я ценю, что это было трудно заметить из примера кода, который я предоставил. Надеюсь, он все еще может быть полезен для людей в подобной ситуации.

Тем не менее, когда я пытаюсь добавить строку

controller.shadowLayer.shadowPath = [UIBezierPath bezierPathWithRect:myRect].CGPath;

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

Ответы на вопрос(2)

Ваш ответ на вопрос