Я пытаюсь понять, как работают 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 с поддержкой слоев. Затем я добавляю этот подкласс в контейнер с контейнером, не поддерживающий слой. Я также добавляю NSTextField в containerView, явно позиционируя его над подклассом NSView под псевдонимом.
Моя цель состоит в том, чтобы показать NSTextField над видом с поддержкой слоя. Тем не менее, в помощнике редактора изображение NSTextField появляется под видом с поддержкой слоя. Может кто-то, пожалуйста, помогите понять, почему это происходит?