Есть ли способ преобразовать систему координат после изменения альбомной ориентации?

StackOverflow https://stackoverflow.com/questions/896994

  •  23-08-2019
  •  | 
  •  

Вопрос

В приложении для iPhone OS на основе представлений я меняю ориентацию с исходной книжной на альбомная ориентация (UIInterfaceOrientationLandscapeRight).Но теперь начало координат x,y (0,0) находится в нижний левый угол (вместо обычного верхнего левого угла), и каждый раз, когда я хочу сделать что-то, связанное с координатами, мне приходится пересчитывать, чтобы компенсировать новую систему координат.Я также заметил, что мои представления в новой системе координат иногда ведут себя ненормально.Итак, есть ли способ преобразовать систему координат ОДИН РАЗ, сразу после того, как я переключу ориентацию, чтобы я мог продолжать думать о своих координатах как о имеющих начало координат в верхний левый угол?

Это было полезно?

Решение

Если вы примените рекомендуемый подход и примените преобразование к основному виду, чтобы повернуть его:

UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
if (orientation == UIInterfaceOrientationLandscapeRight) 
{
    CGAffineTransform transform = primaryView.transform;

    // Use the status bar frame to determine the center point of the window's content area.
    CGRect statusBarFrame = [[UIApplication sharedApplication] statusBarFrame];
    CGRect bounds = CGRectMake(0, 0, statusBarFrame.size.height, statusBarFrame.origin.x);
    CGPoint center = CGPointMake(60.0, bounds.size.height / 2.0);

    // Set the center point of the view to the center point of the window's content area.
    primaryView.center = center;

    // Rotate the view 90 degrees around its new center point.
    transform = CGAffineTransformRotate(transform, (M_PI / 2.0));
    primaryView.transform = transform;
}   

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top