1
我想了解層支持的NSViews是如何工作的。我在遊樂場內創建了以下代碼。圖層支持的NSView子類在其非層支持的超級視圖上導致z-index問題
import Cocoa
import XCPlayground
class MyView: NSView {
override init(frame: NSRect) {
super.init(frame: frame)
wantsLayer = true //if commented change centerX & centerY accordingly
layerContentsRedrawPolicy = .OnSetNeedsDisplay
layer!.backgroundColor = CGColorCreateGenericRGB(0.0, 0.0, 0.0, 0.5)
}
required init?(coder: NSCoder) {
super.init(coder: coder)
}
}
let containerView: NSView = NSView(frame: CGRectMake(0, 0, 150, 165))
let myView: MyView = MyView(frame: containerView.frame)
let label: NSTextField = NSTextField(frame: NSRect(x: 0.0, y: 0.0, width: 100, height: 22))
label.stringValue = "Please wait..."
label.drawsBackground = false
label.bordered = false
label.selectable = false
label.textColor = NSColor.whiteColor()
//containerView.addSubview(myView)
containerView.addSubview(myView)
containerView.addSubview(label, positioned: .Above, relativeTo: myView)
XCPShowView("view", containerView)
本質上我創建了一個支持層的NSView子類。然後我將這個子類添加到非分層支持的containerView中。我還將一個NSTextField添加到containerView中,方法是將其明確定位在支持圖層的NSView子類之上。
我的目標是讓NSTextField顯示在層次支持的視圖之上。但是,在助理編輯器中,NSTextField視圖顯示在圖層背景視圖下方。有人能幫助理解爲什麼發生這種情況嗎?