Ответ на заголовок: Да, CGAffineTransform может вращаться более чем на 360 градусов.
Ответ на вопрос: Да, но вы не можете оживить это, потому что нечего оживлять.
Помните, что аффинное преобразование является матрицей , и что матрица вращения содержит синус и косинус чисел , предварительно вычисленные . Это как если бы вы сказали:
CGFloat angle = 4.0 * M_PI;
NSAffineTransformStruct matrix = {
.m11 = cos(angle),
.m12 = sin(angle),
.m21 = -sin(angle),
.m22 = cos(angle),
.tx = 0.0,
.ty = 0.0
};
NSAffineTransform *transform = [NSAffineTransform transform];
[transform setTransformStruct:matrix];
Теперь давайте рассмотрим некоторые примеры значений для cos
и sin
:
cos(0π)
= 1
sin(0π)
= 0
cos(2π)
= 1
sin(2π)
= 0
cos(4π)
= 1
sin(4π)
= 0
Помните, матрица не содержит угол - она содержит только косинус и синус . И эти значения не меняются от одного кратного круга к другому. Поэтому нечего оживлять.
(обратите внимание, что Calculator.app дает неверные результаты для cos (xπ) и sin (xπ). Попробуйте Grapher, calc или Google .)
Вам нужно будет разделить анимацию на части круга. Полукруги, предложенные Брэдом Ларсоном, подойдут.