拿这段代码:
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循环从superview中删除所有子视图。在循环结束时,i
为2,表示删除了2个子视图。由于我自己没有添加任何内容,这些子视图是什么?
答案 0 :(得分:2)
默认的UIViewController中有两个隐藏层。 当您打印代码的输出时,您将找到
< _UILayoutGuide:0x7f981a513750; frame =(0 0; 0 0); hidden = YES; layer => < _UILayoutGuide:0x7f981a5142f0; frame =(0 0; 0 0); hidden = YES; layer =>
答案 1 :(得分:0)
UIViewController的视图属性可以包含系统使用的一些内部子视图,这些子视图可以根据iOS版本,上下文等而有所不同。如果要删除自己创建的子视图,可以使用一种简单的方法这样做是为了将你的v1 UIView声明为ViewController类的属性
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()
}
}