所以我有一個自定義視圖,在該自定義視圖中我呈現另一個像這樣的視圖
UIApplication.shared.keyWindow!.addSubview(self.customView2)
這是一個下拉選單,所以我需要將它放在所有內容之上和自定義視圖范圍之外,所以問題是,當我的自定義視圖移出時,我可以將它從視窗中洗掉嗎?我試過func willMove(toWindow newWindow: UIWindow?) 了,它正在作業,但有延遲,這是不可取的。
uj5u.com熱心網友回復:
如果您不想延遲洗掉您的 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 覆寫函式。
當活動的視圖控制器從螢屏上移除時呼叫 viewWillDisappear 覆寫函式。
所以你應該在 viewWillDisappear 覆寫函式中使用 customView2?.removeFromSuperview() 。
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
customView2?.removeFromSuperview()
}
這樣,如果用戶向前或向后移動,您的自定義視圖將從螢屏上消失。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/473515.html
