如何在另一个视图关闭时从 window 中删除视图?
How to remove view from window when another view closes?
所以我有一个自定义视图,在该自定义视图中我呈现另一个这样的视图
UIApplication.shared.keyWindow!.addSubview(self.customView2)
它是一个下拉菜单,所以我需要将它放在自定义视图边界之外的所有内容之上,所以问题是,当我的自定义视图移出时,我可以将它从 window 中删除吗?
我尝试了 func willMove(toWindow newWindow: UIWindow?)
,它可以正常工作,但有延迟,这是不可取的。
如果你不想延迟删除你的customView,你可以使用removeFromSuperview()
func doSomething() {
customView2 = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
customView2?.backgroundColor = UIColor.blue
UIApplication.shared.keyWindow!.addSubview(customView2!) // Your custom view is on Screen now
//Your code ...
customView2?.removeFromSuperview() //Time to remove your custom view from screen directly
}
已更新
如果用户在屏幕上时在导航控制器中向前或向后移动,您想删除自定义视图。
最好的方法是使用 UIViewController override func.
viewWillDisappear 覆盖函数在活动视图控制器从屏幕上移除时被调用。
所以你应该在 viewWillDisappear 覆盖函数中使用 customView2?.removeFromSuperview()。
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
customView2?.removeFromSuperview()
}
这样,如果用户向前或向后移动,您的自定义视图将从屏幕上消失。
所以我有一个自定义视图,在该自定义视图中我呈现另一个这样的视图
UIApplication.shared.keyWindow!.addSubview(self.customView2)
它是一个下拉菜单,所以我需要将它放在自定义视图边界之外的所有内容之上,所以问题是,当我的自定义视图移出时,我可以将它从 window 中删除吗?
我尝试了 func willMove(toWindow newWindow: UIWindow?)
,它可以正常工作,但有延迟,这是不可取的。
如果你不想延迟删除你的customView,你可以使用removeFromSuperview()
func doSomething() {
customView2 = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
customView2?.backgroundColor = UIColor.blue
UIApplication.shared.keyWindow!.addSubview(customView2!) // Your custom view is on Screen now
//Your code ...
customView2?.removeFromSuperview() //Time to remove your custom view from screen directly
}
已更新
如果用户在屏幕上时在导航控制器中向前或向后移动,您想删除自定义视图。
最好的方法是使用 UIViewController override func.
viewWillDisappear 覆盖函数在活动视图控制器从屏幕上移除时被调用。
所以你应该在 viewWillDisappear 覆盖函数中使用 customView2?.removeFromSuperview()。
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
customView2?.removeFromSuperview()
}
这样,如果用户向前或向后移动,您的自定义视图将从屏幕上消失。