2015-10-05 4 views
0

Я пытаюсь перенести некоторые преобразования с Android на iOS. В частности, я пытаюсь сделать следующее (в Android):iOS эквивалент этих преобразований

matrix.reset(); 
matrix.postTranslate(xOffset,yOffset); 
matrix.postScale(scaleX, scaleY); 

По сути я пытаюсь перевести и масштаб. Каков эквивалент этого кода в iOS? Я уже пробовал следующее:

CATransform3D scaleTransform = CATransform3DMakeScale(scaleX, scaleY,1); 
CATransform3D translateTransform = CATransform3DMakeTranslation(xOffset,yOffset,0); 
CATransform3D combined = CATransform3DConcat(scaleTransform, translateTransform) 

Вышеуказанные два не являются эквивалентными. Любые указатели на отладку действительно помогли бы. Благодарю.

ответ

0

В флексии Android ваша матричная операция - это Перевод * Масштаб, но ваш снимок iOS использует Scale * Translate.

Матрица mulitplication не Коммутативный, поэтому порядок important.Try изменить порядок умножения, т.е. вместо:

CATransform3D combined = CATransform3DConcat(scaleTransform, translateTransform) 

использование:

CATransform3D combined = CATransform3DConcat(translateTransform, scaleTransform) 
+0

применяет то же преобразование на слое идемпотенту? – chochim

Смежные вопросы