如何让UIView覆盖整个屏幕。我有一个黑色的UIView,它的alpha值是0.5。它上面还有一个子视图。现在blackView位于navigationBar下方。我希望它覆盖整个屏幕,包括navigationBar。
如下图所示。弹出视图后面的黑暗视图应覆盖整个屏幕。 我用于视图的约束很简单:
view.addsubView(blackView)
_ = blackview.anchor(view.topAnchor, left: view.leftAnchor, bottom: view.bottomAnchor, right: view.rightAnchor, topConstant: 0, leftConstant: 0, bottomConstant: 0, rightConstant: 0, widthConstant: 0, heightConstant: 0)
弹出窗口是blackView的子视图:
blackView.addSubview(reminderPopUpView)
我该怎么做?
答案 0 :(得分:3)
您只需将视图添加为窗口子视图即可。
OpenQA.Selenium.NoSuchElementException: 'no such element'
答案 1 :(得分:2)
将您的视图添加到窗口的子视图中,如下所示:
let mainWindow = UIApplication.sharedApplication().keyWindow!
let overlayview = UIView(frame: CGRect(x: mainWindow.frame.origin.x, y: mainWindow.frame.origin.y, width: mainWindow.frame.width, height: mainWindow.frame.height))
mainWindow.addSubview(overlayview);
您可以根据您的要求调整背景颜色和alpha值。
答案 2 :(得分:2)
按照以下步骤解决您的问题:
1>使用要叠加的插座创建UIView
,然后将其调用viewOverLay
2 - ;使用下面的代码覆盖该视图以覆盖整个屏幕甚至导航栏
self.navigationController?.view.addSubview(self.viewOverLay)
self.viewOverLay.frame.size.height = (self.navigationController?.view.bounds.height)!
self.viewOverLay.alpha = 0.0
3>当你想要展示它时
UIView.animate(withDuration: 0.3) { self.viewOverLay.alpha = 1.0 }
4>当你想隐藏它时
UIView.animate(withDuration: 0.3) { self.viewOverLay.alpha = 0.0 }
如果它适合您,请告诉我。
答案 3 :(得分:1)
对于我来说,使用自动布局在新的UIViewController上绘制popupView会更容易,然后使用全屏淡入显示它:
if let popupVC = UIStoryboard(name: "Popup", bundle: nil).instantiateViewController(withIdentifier: "PopupVC") as? PopupVC {
popupVC.parentVC = self
popupVC.modalPresentationStyle = UIModalPresentationStyle.custom
popupVC.modalTransitionStyle = UIModalTransitionStyle.crossDissolve
present(popupVC, animated: true, completion: nil)
}
使用行popupVC.parentVC = self
,我将当前的UIViewController(称为parentVC)传递给popupVC。这样,当popupVC被关闭时,我可以将数据传递回其父级。
使用委托可以完成相同的工作,这取决于您需要进行多少次去耦。