我的应用程序具有添加到AppDelegate窗口的UITabBarController视图,该窗口显示了几个自定义UIViewControllers的视图。在每个视图控制器中我都有:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
return TRUE;
}
实施,以便应用程序随设备一起旋转。
在其中一个视图控制器上,我想在一些自定义子视图对象产生的触摸坐标之间进行一些比较,并且在旋转之后,它们位于视图控制器中坐标的旋转坐标空间中。
所以我之前问了一个关于如何最好地实现这一点的问题,我被建议使用viewController的视图变换来获得相同旋转的坐标。听起来不错,但是当我开始使用它时,事情没有按计划进行。所以我试着放入一些NSLog来找出原因。
在我放置的视图控制器中:
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation{
NSLog(@"VC Transform: %@", NSStringFromCGAffineOrientation(self.view.transform));
}
我发现在每个方向上输出都是[1,0,0,1,0,0],即使屏幕明显旋转。我只想提一下,我试图在我的代码中为它分配一些东西。
所以我尝试添加:
NSLog(@"AD Tansform: %@", NSStringFromCGAffineOrientation(mainDelegate.window.transform));
看看是否有更多有趣的事情发生在那里,但发现了相同的结果。我还尝试将它添加到我的其他一个视图控制器中,这些视图控制器在旋转后没有做任何工作并且发现了同样的事情。
有人能想到视图转换可能没有改变的原因吗?
答案 0 :(得分:1)
Windows和视图的转换属性。该转换旨在由用户设置。
要查看界面的旋转方式,您可以尝试:
[[UIDevice currentDevice] orientation]
订阅界面方向通知,如以下答案:How to subscribe self on the event of Device Orientation(not interface orientation)?