Получить центральное положение экрана в альбомной ориентации - PullRequest
0 голосов
/ 23 января 2012

На данный момент у меня есть UIImageView внутри окна. Когда сцена загружается, я сохраняю ее положение с помощью:

imageView.center

Пользователь может перетаскивать его. В некоторых случаях элемент возвращается в исходное положение, которое было сохранено. Это все отлично работает, когда держу iPad вертикально.

Когда я держу его горизонтально, хотя я не могу переместить его обратно в это положение, потому что в ландшафтном режиме я не могу использовать положение, которое было сохранено в режиме вертикальной ориентации. это связано с тем, что в Интерфейсном Разработчике я установил для элемента автоматический размер относительно границ (то есть, если элемент находился в центре, то при вращении IPad он все еще остается в центре)

Итак, мой вопрос: как я могу получить правильное исходное положение элемента в горизонтальной ориентации?

Я пытался вручную вычислить позицию так:

- (CGPoint)getHorizontalCoordinatesForPoint:(CGPoint)point
{
    CGSize size = [[UIScreen mainScreen]applicationFrame].size;
    CGFloat relativeX = (point.x / (size.width));
    CGFloat relativeY = point.y / (size.height);
    CGFloat horizontalScreenX = relativeX * (size.height);
    CGFloat horizontalScreenY = relativeY * (size.width);
    return CGPointMake(horizontalScreenX, horizontalScreenY);
}

но эта позиция немного отклонена. Я думаю, что это потому, что я не принимаю во внимание размер панели навигации. Есть ли какая-то функция преобразования в ios, которая уже делает то, что я хочу?

1 Ответ

1 голос
/ 23 января 2012

Не.

Вместо сохранения [imageView center] при загрузке сцены сохраните его в ключевых точках:

-touchesBegan: withEvent: (или, если выиспользование распознавателей жестов в обратном вызове распознавателя жестов)и перезапускает приложение.В этом случае я бы запустил приложение в альбомной ориентации и позволил автоповороту в портретной ориентации исправить правильную центральную точку.

...