#ios #rotation #mapkit #overlay
#iOS #поворот #mapkit #наложение
Вопрос:
Я создал пользовательское наложение, содержащее геометрическую фигуру для приложения iOS. Я хотел бы повернуть его вокруг его центра (или, скорее, центра boundingMapRect). Насколько я понимаю, использование CGContextRotateCTM (contextRef, angle) поворачивает наложение, используя верхний левый угол boundingMapRect в качестве источника, поэтому, если я немного поверну свое наложение по часовой стрелке, оно появится вниз и влево от его предыдущего местоположения.
Я подумал, что если бы я мог захватить начальный центр ограничивающего прямоугольника наложения, затем центр после поворота, тогда я мог бы вычислить разницу координат и изменить положение наложения с помощью CGContextTranslateCTM. Моя проблема в том, что центральные местоположения были одинаковыми до и после вызова CGContextRotateCTM. Есть ли какой-нибудь способ принудительно запустить этот вызов, чтобы я мог получить новое местоположение центра? Есть ли лучший способ сделать это?
Я видел несколько ссылок на использование половины ширины и высоты наложения для изменения положения, но я не понимаю, как это помогает, поскольку оно постоянное.
Спасибо.
Ответ №1:
Вот мое решение, запускаемое на swift 3:
Предположим, centerPoint
это CGPoint
объект, вокруг которого вы хотите повернуть.
let a = sqrt(pow(centerPoint.x, 2.0) pow(centerPoint.y, 2.0))
let sub1 = (centerPoint.y / a) * cos(angle / 2.0)
let sub2 = (centerPoint.x / a) * sin(angle / 2.0)
let deltaX = -2 * a * sin((0 - angle) / 2.0) * (sub1 sub2)
let sub3 = (centerPoint.x / a) * cos(angle / 2.0)
let sub4 = (centerPoint.y / a) * sin(angle / 2.0)
let deltaY = 2 * a * sin((0 - angle) / 2.0) * (sub3 - sub4)
context.translateBy(x: deltaX, y: deltaY)
context.rotate(by: angle)
Ответ №2:
Вы пробовали устанавливать точку привязки для поворота? После установки точки привязки поворот будет происходить вокруг центра вида.
Что-то вроде:
[yourView.layer setAnchorPoint:CGPointMake( 0.5, 0.5 )]; // center of the view
Более подробную информацию смотрите в документах Apple.
Комментарии:
1. Как вы поворачиваете его впоследствии? И ваша ссылка на документы Apple не существует.