我的ViewController中有这段代码。我以编程方式添加的视图却无处可见。
override func viewDidLoad() {
super.viewDidLoad()
let f: NSRect = NSMakeRect(0, 0, 200, 200)
let v: NSView = NSView(frame: f)
v.layer?.backgroundColor = NSColor.yellowColor().CGColor
self.view.addSubview(v)
}
另外,我尝试创建一个自定义NSWindowController并将其设置为界面构建器情节提要中主窗口的自定义类。那里我有以下代码:
override func windowDidLoad() {
super.windowDidLoad()
let f: NSRect = NSMakeRect(0, 0, 200, 200)
let v: NSView = NSView(frame: f)
v.layer?.backgroundColor = NSColor.yellowColor().CGColor
self.window?.contentView?.addSubview(v)
}
这也不起作用:/
我什至尝试将设置v.wantsLayer = true
作为我在网上发现的答案之一,但是从一开始就觉得很奇怪,当然什么也没做。
我在这里做错了什么?
当我用尽所有可能的场景时,回答我自己的问题,当然罪魁祸首最终成了wantsLayer
。
最初我做了:
override func windowDidLoad() {
super.windowDidLoad()
let f: NSRect = NSMakeRect(32, 32, 200, 200)
let v: NSView = NSView(frame: f)
v.layer?.backgroundColor = NSColor.greenColor().CGColor
v.wantsLayer = true
self.window?.contentView?.addSubview(v)
if let views = self.window?.contentView?.subviews {
for v in views {
print(v.frame)
}
}
}
我可以看到该视图已添加到contentView中,但是它是不可见的。在意识到自己的错误之前,我做了很多事情:
的v.wantsLayer = true
需要声明(当然)是其中I指定的层本身的backgroundColor线之上。
所以是的...这现在可以工作:
override func windowDidLoad() {
super.windowDidLoad()
let f: NSRect = NSMakeRect(32, 32, 200, 200)
let v: NSView = NSView(frame: f)
v.wantsLayer = true
v.layer?.backgroundColor = NSColor.greenColor().CGColor
self.window?.contentView?.addSubview(v)
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句