UIViewController 中的隐藏子视图
Hidden subviews in UIViewController
取此代码:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
var i = 0
//let v1 = UIView(frame:CGRectMake(113, 111, 132, 194))
//v1.backgroundColor = UIColor.redColor()
//self.view.addSubview(v1)
for v in self.view.subviews as! [UIView] {
v.removeFromSuperview()
i++
}
println(i)
}
}
for 循环从父视图中删除所有子视图。在循环结束时,i
为 2,这意味着删除了 2 个子视图。由于我自己没有添加任何子视图,这些子视图是什么?
UIViewController 的视图 属性 可以有一些系统使用的内部子视图,这些可以根据 iOS 版本、上下文等而有所不同。如果你想要删除您自己创建的子视图,一种简单的方法是将 v1 UIView 声明为 ViewController class
的 属性
class ViewController: UIViewController {
let v1 = UIView(frame:CGRectMake(113, 111, 132, 194))
override func viewDidLoad() {
super.viewDidLoad()
//add the view
v1.backgroundColor = UIColor.redColor()
self.view.addSubview(v1)
//remove the view
v1.removeFromSuperview()
}
}
默认的UIViewController中有两个隐藏层。
当您打印代码的输出时,您会发现
<_UILayoutGuide: 0x7f981a513750; frame = (0 0; 0 0); hidden = YES;
layer = > <_UILayoutGuide: 0x7f981a5142f0;
frame = (0 0; 0 0); hidden = YES; layer = >
取此代码:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
var i = 0
//let v1 = UIView(frame:CGRectMake(113, 111, 132, 194))
//v1.backgroundColor = UIColor.redColor()
//self.view.addSubview(v1)
for v in self.view.subviews as! [UIView] {
v.removeFromSuperview()
i++
}
println(i)
}
}
for 循环从父视图中删除所有子视图。在循环结束时,i
为 2,这意味着删除了 2 个子视图。由于我自己没有添加任何子视图,这些子视图是什么?
UIViewController 的视图 属性 可以有一些系统使用的内部子视图,这些可以根据 iOS 版本、上下文等而有所不同。如果你想要删除您自己创建的子视图,一种简单的方法是将 v1 UIView 声明为 ViewController class
的 属性class ViewController: UIViewController {
let v1 = UIView(frame:CGRectMake(113, 111, 132, 194))
override func viewDidLoad() {
super.viewDidLoad()
//add the view
v1.backgroundColor = UIColor.redColor()
self.view.addSubview(v1)
//remove the view
v1.removeFromSuperview()
}
}
默认的UIViewController中有两个隐藏层。 当您打印代码的输出时,您会发现
<_UILayoutGuide: 0x7f981a513750; frame = (0 0; 0 0); hidden = YES; layer = > <_UILayoutGuide: 0x7f981a5142f0; frame = (0 0; 0 0); hidden = YES; layer = >