gpt4 book ai didi

objective-c - View 的变换不会随着设备旋转而改变

转载 作者:行者123 更新时间:2023-11-29 04:59:26 25 4
gpt4 key购买 nike

我的应用程序将 UITabBarController 的 View 添加到我的 AppDelegate 的窗口中,该窗口显示几个自定义 UIViewController 的 View 。在每个 View Controller 中我都有:

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

实现以便应用程序随设备旋转。

在其中一个 View Controller 上,我想对一些自定义 subview 对象生成的触摸坐标进行一些比较,并且旋转后这些坐标位于 View Controller 中坐标的旋转坐标空间中。

所以我之前问了一个关于如何最好地实现这一点的问题,并建议我利用 viewController 的 View 变换来使坐标进入相同的旋转。原则上听起来不错,但当我开始使用它时,事情并没有按计划进行。所以我尝试放入一些 NSLogs 来找出原因。

在我放置的 View Controller 中:

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

我发现在每个方向上输出都是 [1, 0, 0, 1, 0, 0],即使屏幕明显在旋转。只是要提一下,我绝不会尝试在代码中为其分配某些内容。

所以我尝试添加:

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

看看是否有更有趣的事情发生,但发现了相同的结果。我还尝试将其添加到我的其他 View Controller 之一,该 View Controller 在旋转后没有执行任何工作,并发现了同样的事情。

有人能想到 View 变换可能不改变的原因吗?

最佳答案

窗口和 View 的变换属性不会因界面旋转而修改。该转换旨在由用户设置。

要查看界面如何旋转,您可以尝试:

[[UIDevice currentDevice] orientation]

并订阅界面方向通知,如本答案所示:How to subscribe self on the event of Device Orientation(not interface orientation)?

关于objective-c - View 的变换不会随着设备旋转而改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7299794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com