在旋转时更改app后面的颜色

时间:2014-03-15 17:16:53

标签: ios screen-rotation

当iOS应用程序旋转时,当应用程序位于纵向和横向之间时,它将显示黑色背景。是否可以将此颜色从默认的黑色更改为白色?更改UIWindow的背景颜色无济于事。以下是Safari中旋转期间黑色背景的示例: Safari rotation

4 个答案:

答案 0 :(得分:4)

我已经做了类似的事情,但我现在无法找到来源,但这是一个想法:

创建并添加一个大得多的视图作为后备视图并使其居中。

UIWebView添加为背景为白色的大视图的子视图。

重新定位UIWebView的中心。

答案 1 :(得分:4)

你可以这样做: enter image description here

添加一个UIViewController并将其设置为初始VC(在屏幕截图中为MainVC) 添加两个UIViewContainer:首先用于保存背景视图,第二个用于其他vcs 覆盖后台VC的实现文件中的viewDidLayoutSubviews(在本例中为红色VC的.m文件)

- (void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];

    //Some hardcode :)
    self.view.frame = CGRectMake(-100, -100, 1136, 1136);
}

完成此操作后,您将拥有以下内容:

enter image description here

我知道这不是最好的解决方案,但你可以这样做,直到找到最好的解决方案。

答案 2 :(得分:0)

您可以通过将具有超大边界的空一般视图控制器添加到根视图控制器中并使其在视图层次结构中最低来解决此问题:

CGFloat length = 2*MAX(rootViewController.view.bounds.size.height, rootViewController.view.bounds.size.width);

UIView *oversizedBackgroundView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, length, length)];
oversizedBackgroundView.center = vc.view.center;
oversizedBackgroundView.backgroundColor = [UIColor whiteColor];
rootViewController.view.clipsToBounds = NO;
[rootViewController.view addSubview:oversizedBackgroundView];
[rootViewController.view sendSubviewToBack:oversizedBackgroundView];

self.window.rootViewController = rootViewController;
[self.window makeKeyAndVisible];

此处的关键点是将clipsToBounds设置为NO

答案 3 :(得分:0)

我遇到了同样的问题。据我所知,你想删除黑色背景。我使用的最简单的解决方案是设置窗口clipsToBounds = true而不是rootViewController。

window?.clipsToBounds = true