iOS中的额外CALayer子图层

时间:2015-06-15 10:15:31

标签: ios swift calayer

我创建了一个用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.
}

我想知道额外的两层是什么。

1 个答案:

答案 0 :(得分:2)

每个UIView都由CALayer备份,视图层次结构和图层层次结构相互连接。

如果您打印出subviews,则会看到该视图有两个类型为_UILayoutGuide的子视图,它们代表控制器的topLayoutGuidebottomLayoutGuide。每个子视图都有一个图层,这样就是你的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>])