Неявная анимация не работает на iPhone - PullRequest
2 голосов
/ 22 августа 2011

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

Поддерживает ли iPhone OS неявную анимацию?

Другая частьМоя проблема заключается в следующем

Подход, рекомендованный justinkmunger в приведенной выше ветке, прекрасно работает для меня:

CALayer *labelLayer = self.label.layer;
labelLayer.delegate = self;
layer.position = CGPointMake(labelLayer.position.x, labelLayer.position.y + 50);

Однако у меня есть два вопроса:

1)как бы я применил этот подход к объекту CALayer, который является подуровнем объекта слоя UIView, как показано ниже:

CALayer* l = [CALayer layer];
l.frame = CGRectMake(0, 0, 200, 350);
layer.opacity = 0;
[self.view.layer addSublayer:l];

l.delegate = self;
[CATransaction setAnimationDuration:5];
1.opacity = 1;    // DOES NOT ANIMATE!! Event if i add: self.view.layer.delegate = self;

2) Почему этот подход не применим к слою в представлении моего UIViewController?

CALayer *layer = self.view.layer;
layer.delegate = self;
layer.opacity = 0;
[CATransaction setAnimationDuration:5];
layer.opacity = 1;   // DOES NOT ANIMATE!!
Many thanks AF

Надеюсь, кто-то может помочь Cheers AF

Ответы [ 2 ]

2 голосов
/ 25 августа 2011

После дополнительного поиска я наткнулся на следующее в Руководство по программированию базовой анимации :

Важное замечание: При изменении свойств слоя из потоков, у которых нет цикла выполнения, необходимо использовать явные транзакции.

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

0 голосов
/ 22 августа 2011

тебе не нужно [CATransaction begin]; и [CATransaction commit];

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...