UIView添加在窗口顶部不会在iOS上旋转

时间:2013-02-05 09:39:34

标签: ios uiview rotation uitabbar uiwindow

我有一个基于tabBar的应用程序,想要在整个屏幕上呈现一些自定义视图(而不是模态视图),我这样做:

[self.view.window addSubview:self.myViewController.view];

我这样做的原因是因为这种方式视图位于UITabBar之上。

无论如何,视图很好地呈现,它像我想要的那样覆盖整个屏幕。但有一个问题。当我旋转设备时,此顶视图不会旋转,但下面的视图会旋转。

我在iOS5iOS6上测试过没有运气。还将此代码放在委托中:

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
    return UIInterfaceOrientationMaskAll;
}

类似的代码在myViewController的视图中:

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAll;
}

视图只是不旋转......?

2 个答案:

答案 0 :(得分:0)

据我所知,只有窗口的第一个子视图才能获得旋转事件。您正在向窗口添加另一个视图(您的视图),因此需要自己处理传播旋转事件。

为您提供一些非常快捷的帮助,请查看以下实施:AGWindowView(2016年未维护)

答案 1 :(得分:0)

您可以为UIWindow设置rootController。 例如:

fileprivate(set) var bottonOverlayWindow = UIWindow()

self.bottonOverlayWindow.rootViewController = self; 

//'self'将在其上添加UIWindow视图的ViewController。因此,每当ViewController更改方向时,窗口视图也会更改其方向。

让我知道您是否遇到任何问题。