iOS 中的额外 CALayer 子层
Extra CALayer's subLayers in iOS
我创建了一个用 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.
}
不知道多出来的两层是什么
每个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>])
我创建了一个用 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.
}
不知道多出来的两层是什么
每个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>])