Преобразование представления не изменяется после поворота устройства - PullRequest
0 голосов
/ 04 сентября 2011

Мое приложение имеет вид UITabBarController, добавленный в окно моего AppDelegate, в котором отображаются виды нескольких настроенных UIViewController.В каждом контроллере вида:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
    return TRUE;
}

реализован так, что приложение вращается вместе с устройством.

На одном из контроллеров представления я хочу провести некоторое сравнение между сенсорными координатами, полученными с помощьюнекоторые настраиваемые объекты подпредставления и после поворота они находятся в повернутом координатном пространстве от координат в контроллере представления.

Поэтому я ранее задал вопрос о том, как лучше всего достичь этого, и мне посоветовали использовать viewControllerпреобразование вида, чтобы получить координаты в том же повороте.Звучало хорошо в принципе, но когда я пришел к нему, все пошло не по плану.Поэтому я попытался вставить некоторые NSLogs, чтобы выяснить, почему это может быть.

В контроллере представления я поместил:

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation{
    NSLog(@"VC Transform: %@", NSStringFromCGAffineOrientation(self.view.transform));
}

, и я обнаружил, что в любой ориентации вывод равен [1, 0, 0, 1, 0, 0], хотя экран явно вращается.Просто не говоря уже о том, что я пытаюсь присвоить ему что-то в своем коде.

Поэтому я попытался добавить:

NSLog(@"AD Tansform: %@", NSStringFromCGAffineOrientation(mainDelegate.window.transform));

, чтобы увидеть, что там происходит, что-то более интересное, нонашел тот же результат.Я также попытался добавить его в один из моих других контроллеров представления, который не выполняет никакой работы после поворота, и обнаружил то же самое.

Может кто-нибудь придумать причину, по которой преобразование представления может не измениться?

1 Ответ

1 голос
/ 07 ноября 2011

Свойство преобразования Windows и представлений не изменяется при повороте интерфейса. Это преобразование предназначено для установки пользователем.

Чтобы увидеть, как вращается интерфейс, вы можете попробовать:

[[UIDevice currentDevice] orientation]

И подписаться на уведомления об ориентации интерфейса, как в этом ответе: Как подписаться самостоятельно на событие Ориентация устройства (не ориентация интерфейса)?

...