我的问题应该很简单,但我找不到解决办法。
我正在显示模态VC,我想追加暗淡的背景视图。
模态VC作为子项添加到父VC。父VC位于导航控制器(topViewController
)的顶部
昏暗的视图被添加到UIScreen.windows.first!
窗口。但昏暗的视图并没有填满整个屏幕。我用CGPointZero
为原点设置框架,我尝试了负y值它没有帮助。它看起来像这样。另外我添加了一组自动布局约束,设置为false / true translatesAutoresizingMaskIntoConstraints
属性,更改了clipToBounds
。
没有任何帮助,昏暗的视图不会覆盖整个屏幕。
我可以全屏显示昏暗视图,如果我不添加模态VC作为孩子,即我直接利用模态VC的视图,并将其添加到window
。它看起来很好,但还有另一个bug。这就是为什么我要添加模态VC,作为一个孩子VC。如何强制昏暗的视图显示整个屏幕。
在应用程序中可能会同时显示几个模态VC,这就是为什么seques(即VC的呈现)不是最佳选择。
附:这是错误的描述:
。如果将模态VC(UITableVC放入导航控制器)的视图直接添加到窗口,则视图在从BG返回后显示移位表,即在BG中并且开始从BG显示模态VC之后切换回Foreground,表格标题的一部分(问题显示部分)向上移动并且模态VC的导航栏被展开,即它们相交,表格的标题未完全显示。我无法解决这个问题。
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)
将您的视图放在导航控制器的视图下:
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];