CALayer的属性isGeometryFlipped在macOS上不起作用

时间:2018-04-15 05:23:47

标签: swift macos cocoa calayer nsview

我想将NSView的几何图形更改为左上角。但结果不正确。(PS:结果在iOS平台上是正确的。)

我的代码就像这样&效果如下:

import Cocoa

class ViewController: NSViewController {

override func viewDidLoad() {
    super.viewDidLoad()
    self.view.wantsLayer = true
    self.view.layer?.isGeometryFlipped = true

    let red = NSView(frame: NSRect(origin: .zero, size: CGSize(width: 400, height: 200)))
    red.wantsLayer = true
    red.layer?.backgroundColor = NSColor.red.cgColor

    let yellow = NSView(frame: NSRect(origin: .zero, size: CGSize(width: 200, height: 100)))
    yellow.wantsLayer = true
    yellow.layer?.backgroundColor = NSColor.yellow.cgColor

    red.addSubview(yellow)
    view.addSubview(red)

}

}

enter image description here

为什么我设置View的图层的属性 isGeometryFlipped = true ,几何图形不会改变  从左下角左上角

1 个答案:

答案 0 :(得分:0)

这是因为iOS和macOS中的坐标系不一样。 点(x:0,y:0)在: - iOS:位于左上角 ios coordinate system

  • macOS:在左下角 macOS coordinate system

如果您想要红色视图的top left处的黄色视图,请执行以下操作:

let yellow = NSView(frame: NSRect(origin: CGPoint(x: 0, y: 400), size: CGSize(width: 200, height: 100)))