Существует ли способ выяснить, сколько градусов представление поворачивается в настоящее время во время анимации?

Чтобы обновить все элементы в массиве, вам нужен позиционный оператор all $ [] , попробуйте:

db.col.update({ "_id" : ObjectId("5c692860843d26064d1f1429") }, { $set: { "rows.$[].baseValue": toValue } })

В противном случае $set попытается создать новое значение в существующем массиве. что невозможно

7
задан Thanks 18 May 2009 в 11:09
поделиться

2 ответа

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

CATransform3D rotationTransform = [(CALayer *)[self.layer presentationLayer] transform];
float angle;
if (rotationTransform.m11 < 0.0f)
    angle = 180.0f - (asin(rotationTransform.m12) * 180.0f / M_PI);
else
    angle = asin(rotationTransform.m12) * 180.0f / M_PI;

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

РЕДАКТИРОВАТЬ (18.05.2009): добавлено преобразование типов в CALayer для устранения предупреждений компилятора и исправлено именование преобразования в операциях тригонометрии.

4
ответ дан 6 December 2019 в 05:56
поделиться

Это старый вопрос, но я столкнулся с этим ответом, пытаясь найти текущий угол поворота во время анимации ключевого кадра: -

CALayer* layer = [self.layer presentationLayer];
float currentAngle = [[layer valueForKeyPath:@"transform.rotation.z"] floatValue];

Кажется, у меня работает. Также красиво и лаконично.

27
ответ дан 6 December 2019 в 05:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: