CGAffineTransformMakeRotation и CGAffineTransformMakeScale

Почему только один из вышеперечисленных работает в коде?

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

image.transform = CGAffineTransformMakeRotation(M_PI/2.5);
image.transform = CGAffineTransformMakeScale(1.25, 1.25);

И мое изображение масштабируется до 125%, как говорит вторая строка, однако оно вообще не вращается.

Когда я переворачиваю код, чтобы сказать...

image.transform = CGAffineTransformMakeScale(1.25, 1.25);
image.transform = CGAffineTransformMakeRotation(M_PI/2.5);

Мое изображение повернуто, но не масштабировано...

Есть ли способ использовать оба в одном коде?

У меня есть это в моем методе viewDidLoad. Может кто-нибудь помочь мне?

Спасибо!


person Dummy Code    schedule 17.06.2013    source источник
comment
Если вам нужна дополнительная информация, прокомментируйте, и я свяжусь с вами.   -  person Dummy Code    schedule 18.06.2013


Ответы (2)


Второй не должен использовать Make исполнение функции. Таким образом, вы должны, например, либо:

CGAffineTransform transform = CGAffineTransformMakeScale(1.25, 1.25);
image.transform = CGAffineTransformRotate(transform, M_PI/2.5);

or

CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI/2.5);
image.transform = CGAffineTransformScale(transform, 1.25, 1.25);

Сравните Создание матрицы аффинных преобразований с помощью Изменение аффинных преобразований.

person Rob    schedule 17.06.2013
comment
Что-то не так с вашим первым кодом, но второй работает отлично. Большое спасибо! - person Dummy Code; 18.06.2013
comment
@HenryHarris Это потому, что этот метод CGAffineTransformRotation должен был быть CGAffineTransformRotate. Я обновил ответ соответственно. - person Rob; 18.06.2013

CGAffineTransformMake применяются к матрице идентичности, поэтому вы вращаетесь, но затем вы как бы восстанавливаете идентичность и применяете масштаб. Используйте CGAffineTransformMake.. только для первого, для второго используйте CGAffineTransform...

person Andrea    schedule 17.06.2013