((UIImageView*)[dsry objectAtIndex:0]).transform = CGAffineTransformMakeRotation(1.57*2);
((UIImageView*)[dsry objectAtIndex:0]).transform = CGAffineTransformMakeScale(.5,.5);
Только одна из этих работ за один раз. Как я могу сохранить преобразование и затем применить другого? Аплодисменты
Чтобы расширить то, что сказал Питер, вам нужно использовать следующий код:
CGAffineTransform newTransform;
newTransform = CGAffineTransformMakeRotation(1.57*2);
((UIImageView*)[dsry objectAtIndex:0]).transform = CGAffineTransformScale(newTransform,.5,.5);
Функции CGAffineTransformMake ... создают новые преобразования с нуля, тогда как остальные объединяют преобразования. К видам и слоям может применяться только одно преобразование за раз, поэтому вы можете одновременно создавать несколько эффектов масштабирования, поворота и перемещения для вида.
Вам нужно внимательно следить за порядком конкатенации преобразований, чтобы добиться правильного эффекта.
Из документации Apple:
CGAffineTransformConcat Возвращает матрица аффинного преобразования построен путем объединения двух существующих аффинные преобразования.
CGAffineTransform CGAffineTransformConcat (
CGAffineTransform t1,
CGAffineTransform t2
);
Параметры t1 Первый аффинный преобразование.
t2 Второе аффинное преобразование. Эта аффинное преобразование присоединяется к первое аффинное преобразование.
Возвращаемое значение Новое аффинное преобразование матрица преобразования. То есть t '= t1 * t2.
Конкатенация обсуждения объединяет два матрицы аффинного преобразования умножая их вместе. Ты можешь выполнить несколько конкатенаций в чтобы создать один аффинный преобразование, содержащее совокупное эффекты нескольких преобразований.
Обратите внимание, что матричные операции не коммутативный - порядок, в котором вы объединение матриц важно. То есть результат умножения матрица t1 матрицей t2 не обязательно равняется результату умножение матрицы t2 на матрицу t1.
Только одно из них работает одновременно.
Верно, потому что вы заменили первое вторым.
Как я могу сохранить преобразование, а затем применить другое?
Объедините их вместе и назначьте полученную матрицу свойству.
Вы можете сохранить матрицу преобразования в переменной типа CGAffineTransform
; вы можете использовать это для промежуточных шагов в более сложных преобразованиях или для того, чтобы сделать код более понятным (или и то, и другое).