Подтвердить что ты не робот

Какова цель параметра "forKey" при добавлении CAAnimation к слою?

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

Документы на веб-сайте Apple, как правило, велики, но у меня возникают проблемы с тем, чтобы обернуть голову вокруг определенных частей Core Animation. Я хочу явно анимировать позицию CALayer. Из того, что я понимаю, мне нужно создать объект CABasicAnimation, настроить его с помощью fromValue, toValue и т.д., А затем добавить его к слою с помощью этого метода:

- (void)addAnimation:(CAAnimation *)anim forKey:(NSString *)key

Моя проблема в том, что я понятия не имею, каково значение параметра forKey:. Из того, что я видел в примерах в Интернете, это не требуется? Я полагаю, что это имеет какое-то отношение к кодированию ключевого значения? (Я до сих пор этого не понимаю.) Даже если это не требуется, я хотел бы знать, что это такое, чтобы я мог использовать его полезность в своем приложении.

Спасибо за любую помощь, которую вы можете предложить.

4b9b3361

Ответ 1

CALayer имеет несколько способов получения анимаций, добавленных в этот слой. Если вы хотите получить, заменить или удалить определенную анимацию из CALayer, вы должны дать ей ключ, когда вы вызываете анимациюForKey: или removeAnimationForKey:.

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

Ответ 2

Это позволяет вам переопределять анимацию. Например, неявная анимация, созданная путем изменения неявно анимируемого свойства (например, opacity), будет использовать имя свойства в качестве ключа. Таким образом, если вы измените его снова (чтобы создать новую анимацию), новая анимация заменит старую, вместо того, чтобы обе анимации выполнялись одновременно.

Ответ 3

Это всего лишь некоторый идентификатор вашей анимации. Вы можете вызвать методы animationForKey: и removeAnimationForKey: позже с указанным ключом.

Кроме того, поскольку для каждого уникального ключа слой может содержать только одну анимацию, вы можете использовать это значение как идентификатор для некоторого типа анимаций, а все методы ...ForKey: возвратят/удаляют/заменяют самую последнюю анимацию для данного типа/ключа анимации.