iOS昏暗的背景查看全屏

问题描述 投票:0回答:2

我的问题应该很简单,但我找不到解决办法。

我正在显示模态VC,我想追加暗淡的背景视图。

模态VC作为子项添加到父VC。父VC位于导航控制器(topViewController)的顶部

昏暗的视图被添加到UIScreen.windows.first!窗口。但昏暗的视图并没有填满整个屏幕。我用CGPointZero为原点设置框架,我尝试了负y值它没有帮助。它看起来像这样。另外我添加了一组自动布局约束,设置为false / true translatesAutoresizingMaskIntoConstraints属性,更改了clipToBounds

没有任何帮助,昏暗的视图不会覆盖整个屏幕。

Wrong display of dim view

我可以全屏显示昏暗视图,如果我不添加模态VC作为孩子,即我直接利用模态VC的视图,并将其添加到window。它看起来很好,但还有另一个bug。这就是为什么我要添加模态VC,作为一个孩子VC。如何强制昏暗的视图显示整个屏幕。

在应用程序中可能会同时显示几个模态VC,这就是为什么seques(即VC的呈现)不是最佳选择。

enter image description here

附:这是错误的描述:

。如果将模态VC(UITableVC放入导航控制器)的视图直接添加到窗口,则视图在从BG返回后显示移位表,即在BG中并且开始从BG显示模态VC之后切换回Foreground,表格标题的一部分(问题显示部分)向上移动并且模态VC的导航栏被展开,即它们相交,表格的标题未完全显示。我无法解决这个问题。

ios uiview uinavigationcontroller uikit
2个回答
1
投票

Swift 4更新

let dimView = UIView(frame: UIScreen.main.bounds)
dimView.backgroundColor = UIColor(white: 0.4, alpha: 0.5)
self.navigationController!.view.addSubview(dimView)
self.navigationController!.view.bringSubviewToFront(dimView)

0
投票

将您的视图放在导航控制器的视图下:

UIView *dimView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds];
dimView.backgroundColor = [UIColor colorWithWhite:.4f alpha:.5f];
[self.navigationController.view addSubview:dimView];
[self.navigationController.view bringSubviewToFront:dimView];
© www.soinside.com 2019 - 2024. All rights reserved.