Как заменить пользовательскую анимацию для появившегося CALayer - PullRequest
0 голосов
/ 25 февраля 2010

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

- (id < CAAction >)actionForLayer:(CALayer *)layer forKey:(NSString *)key

И я проверяю, чтобы ключ был равен kCAOnOrderIn, однако, слою еще не сказали, какими будут его границы (в настоящее время он сообщает (0, 0, 0, 0) для границ). Затем я попытался проверить, чтобы ключ был равен «границам», но я все еще получаю сообщение об одном и том же прямоугольнике (0, 0, 0, 0).

Анимация, которую я хочу сделать, состоит в том, чтобы вместо слоя, постепенно «исчезающего» на экране через непрозрачность, я хочу, чтобы он рос на экране от маленького размера и в середине до его полных границ. Но для этого мне нужно знать, какими будут все границы. Можно ли это знать, чтобы я мог заменить пользовательскую анимацию, или я просто неправильно подхожу к этому?

Спасибо

1 Ответ

1 голос
/ 03 июня 2010

Я знаю, что это 3 месяца, но я искал ответ для аналогичной проблемы и заметил, что у него нет ответа (я бы хотел, чтобы какой-то представитель;)

Я перезаписываю actionForLayer: forKey: в UIView (iPhone SDK), который автоматически устанавливается в качестве делегата для его поддержки CALayer, чтобы внедрить другое действие для anchorPoint. Я заметил, что могу получить доступ к старому значению через presentationLayer CALayer, и новое значение находится в modelLayer. Но я думаю, что в вашем случае происходит то, что система вызывает действие onOrderIn (возможно, в тот момент, когда слой добавляется в иерархию представления), прежде чем вы сообщите слою, что он ограничен. На самом деле это нормально.

Вы должны ждать «границ» в дополнение к ключу «onOrderIn».

Ты ждешь других ключей? "onOrderOut" или "скрытый"?

Ура, Корин

...