2010-02-24 3 views
0

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

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

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

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

Благодаря

ответ

1

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

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

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

Вы ждете других ключей? «onOrderOut» или «скрытый»?

Cheers, Корин

+0

Гоша, да, это было некоторое время назад. Не хочу отмечать это как ответ, пока я не проверю его с тем, что я пытался сделать тогда. Мне нужно вернуться к вам. – DonnaLea