Ios 删除Swift中由代码添加的UIView
在UINavigationController中,我通过代码添加UIView。 我想在视图消失时删除此UIView,但我找不到正确的方法。以下是我正在使用的:Ios 删除Swift中由代码添加的UIView,ios,swift,uiview,Ios,Swift,Uiview,在UINavigationController中,我通过代码添加UIView。 我想在视图消失时删除此UIView,但我找不到正确的方法。以下是我正在使用的: var patch: UIView! override func viewDidLoad() { super.viewDidLoad() patch = UIView(frame: CGRectMake(0, 0, view.bounds.width, 20)) patch.backgroundColor =
var patch: UIView!
override func viewDidLoad() {
super.viewDidLoad()
patch = UIView(frame: CGRectMake(0, 0, view.bounds.width, 20))
patch.backgroundColor = UIColor.redColor()
self.view.addSubview(patch)
}
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(true)
patch.removeFromSuperview()
// or
self.view.willRemoveSubview(patch)
}
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
if UIDevice.currentDevice().orientation.isLandscape.boolValue {
patch.hidden = true
} else {
patch.hidden = false
}
}
什么也没有,景色还在
我甚至试着将patch设置为nil或CGRectMake(0,0,0,0),但什么都没有
删除它的正确代码是什么?当父视图已经消失时,为什么需要删除它?如果您只将其添加到
viewDidLoad
中,那么肯定没有什么要做的了?当设备是纵向的且隐藏在横向中时,此UIView应该是可见的。所以,如果我关闭视图,然后我回到那里,代码生成另一个UIView,新的UIView由代码管理,所以当屏幕旋转时,新的UIView会消失,但旧的总是在顶部。我真的相信,您没有很好地管理视图。您应该只创建一个UIView
实例-使其成为全局变量。如果你想隐藏或显示你的视图,那么在纵向或横向模式下使用它的hidden
属性。我用这种方式管理UIView,它应该是正确的…好的,看起来不错。请确保您正在正确的对象上调用removeFromSuperview()
。在UI上绘制的对象。这是从视图层次结构中删除ui视图
的正确方法。