Мое приложение имеет вид 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));
, чтобы увидеть, что там происходит, что-то более интересное, нонашел тот же результат.Я также попытался добавить его в один из моих других контроллеров представления, который не выполняет никакой работы после поворота, и обнаружил то же самое.
Может кто-нибудь придумать причину, по которой преобразование представления может не измениться?