我创建了一个用swift编写的新单视图项目并打印self.view.layer.sublayers.count
。数字是2,但我没有添加任何图层或UIView。
override func viewDidLoad() {
super.viewDidLoad()
println(self.view.layer.sublayers.count)
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
我想知道额外的两层是什么。
答案 0 :(得分:2)
每个UIView
都由CALayer
备份,视图层次结构和图层层次结构相互连接。
如果您打印出subviews
,则会看到该视图有两个类型为_UILayoutGuide
的子视图,它们代表控制器的topLayoutGuide
和bottomLayoutGuide
。每个子视图都有一个图层,这样就是你的2个子图层。
证明:
override func viewDidLoad() {
super.viewDidLoad()
print("Top layout guide layer: \((self.topLayoutGuide as! UIView).layer)");
print("Bottom layout guide layer: \((self.bottomLayoutGuide as! UIView).layer)");
print("Sublayers: \(self.view.layer.sublayers)");
}
打印:
Top layout guide layer: <CALayer: 0x7fef8ac28140>
Bottom layout guide layer: <CALayer: 0x7fef8ac27bc0>
Sublayers: Optional([<CALayer: 0x7fef8ac28140>, <CALayer: 0x7fef8ac27bc0>])