Я анимирую положение кнопки, вращая ее вокруг круга. Это создает UISwitch
-подобное поведение, за исключением того, что оно намного более навороченное. Кнопка вращается, но в конечном итоге она покидает желаемое положение примерно на 0,25 радиана. Я пытаюсь выяснить, куда поместить точку привязки, чтобы кнопка вращалась по кругу вокруг своего начала.
Вот код, который я использую, чтобы сделать кнопку "орбитальной" с радиусом 120 пикселей от исходного местоположения.
float offsetX=120;
float offsetY=0;
enableDisableButton.layer.anchorPoint =
CGPointMake(offsetX/enableDisableButton.frame.size.width,
offsetY/enableDisableButton.frame.size.height);
Я использую следующий метод для расчетов. Передав аргумент 90 для degrees
, я ожидаю, что кнопка начнет с позиции 180˚ и переместится на 90 to, все еще на расстоянии 120 пикселей от ее начала
-(CGAffineTransform)calculateLabelPositionFromFixedPointWithOffsetClockwiseInDegrees:(float)degrees
{
float rotation = degrees*(2*M_PI/360);
CGAffineTransform transform24 = CGAffineTransformMakeRotation(rotation);
NSLog(@"rotation: %f", rotation);
return transform24;
}
Это небольшое смещение в 0,25 радиана означает, что мне нужно визуально подтвердить местоположение каждой кнопки, и я не могу легко настроить ее местоположение программно. Любая помощь в определении правильного способа поворота кнопки приветствуется.
Я пробовал другие способы вращения объектов. Например, у меня есть стрелка
<--------x
, и я хотел бы повернуть эту стрелку по кругу вокруг x
. Как правильно расположить опорные точки для этой операции? Это [1, 0,5]?
Более простой способ сделать такой тип вращений - поместить объект в симметричный UIView
, отцентрировать его в нужной точке вращения и назначить преобразование вращения. Это работает, но требует, чтобы представление было в два раза больше:
Y----x----Y
<вращает Y вокруг центральной точки X без каких-либо настроек точки привязки. Это очень полезный метод для поворота стрелок внутри аналоговых датчиков и тому подобное. </p>