当我呈现像 中那样的 View 时,我试图屏蔽 ViewController我呈现我的观点的方式是将它锚定在屏幕之外,如下所示:
addContactTopAnchor = addContact.bottomAnchor.constraint(equalTo:
view.topAnchor)
addContactTopAnchor.isActive = true
addContact.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
addContact.heightAnchor.constraint(equalToConstant: 182).isActive = true
当我按下一个按钮时,我将它移动到显示屏上,如下所示:
func addTapped(){
self.addContactTopAnchor.isActive = false
self.addContactTopAnchor = addContact.bottomAnchor.constraint(equalTo: view.topAnchor, constant: 182)
self.addContactTopAnchor.isActive = true
UIView.animate(withDuration: 0.3, animations: { () -> Void in
self.view.layoutIfNeeded()
})
}
我想屏蔽除 View 之外的所有内容,就像它在我的屏幕截图中显示的那样。
最佳答案
我创建了一个 View
let mask: UIView = {
let view = UIView()
view.backgroundColor = .black
view.alpha = 0
return view
}()
在我按下按钮时,我设置了 alpha 并将我的 View 放在前面
func addTapped() {
self.addContactTopAnchor.isActive = false
self.addContactTopAnchor = addContact.topAnchor.constraint(equalTo: view.bottomAnchor, constant: -182)
self.addContactTopAnchor.isActive = true
UIView.animate(withDuration: 0.3, animations: { () -> Void in
self.view.layoutIfNeeded()
self.mask.alpha = 0.5
self.navigationController?.navigationBar.alpha = 0.5
self.navigationController?.navigationBar.shadowImage = UIImage()
self.view.bringSubview(toFront: self.addContact)
})
}
编辑:我还添加了这个来屏蔽导航栏:
self.navigationController?.navigationBar.alpha = 0.5
self.navigationController?.navigationBar.shadowImage = UIImage()
感谢@desdenova 的帮助
关于ios - 如何在显示 View 时屏蔽 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45104857/