如何在macOS的Swift中通过代码添加NSView?解决不显示问题
解决代码添加NSView后不显示的问题
嘿,我懂你现在遇到的困扰——尝试用Swift代码添加一个NSView,结果它根本没显示出来,你本来期望窗口里能出现一个黑色方块,用的是Xcode 10.2和Swift 5对吧?
问题出在哪?
你的代码顺序搞反啦!你先去设置layer?.backgroundColor = .black,但这时候newView.wantsLayer还没设为true。NSView只有在wantsLayer为true的情况下,才会创建对应的CALayer实例,这时候newView.layer其实是nil,所以你设置背景色的操作等于没做,自然看不到视图。
修正后的代码
只需要把wantsLayer = true的设置移到设置layer背景色之前,问题就解决了:
import Cocoa class ViewController: NSViewController { override func viewDidLoad() { super.viewDidLoad() let newView = NSView(frame: NSRect(x: 10,y: 10, width: 100,height: 100)) // 先开启layer支持,确保layer对象被创建 newView.wantsLayer = true // 现在再设置layer的背景色就会生效了 newView.layer?.backgroundColor = .black self.view.addSubview(newView) } }
现在运行代码,你就能看到那个你想要的黑色方块啦!
内容的提问来源于stack exchange,提问作者William J Bagshaw
相关产品推荐
相关产品推荐

