Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift CALayer代码应该存在于视图还是视图控制器中?_Swift_Macos_Cocoa_View_Calayer - Fatal编程技术网

Swift CALayer代码应该存在于视图还是视图控制器中?

Swift CALayer代码应该存在于视图还是视图控制器中?,swift,macos,cocoa,view,calayer,Swift,Macos,Cocoa,View,Calayer,首先,请原谅我的无知 我正在重构一个自定义视图(扩展了NSView),以使用CALayers绘制网格。网格可以调整大小和拉伸等(我正在适当地暴露iBaction/Outlet) 问题是CALayers的所有使用示例都将代码放入NSViewController的ViewDidLoad()方法中 我只是想了解为什么会这样,以及是否有一个合适的位置将此代码放在视图中,这感觉更正确一些(再次原谅无知) 提前感谢。您应该子类NSView,而不是NSViewController。您可以自定义视图覆盖view

首先,请原谅我的无知

我正在重构一个自定义视图(扩展了NSView),以使用CALayers绘制网格。网格可以调整大小和拉伸等(我正在适当地暴露iBaction/Outlet)

问题是CALayers的所有使用示例都将代码放入NSViewController的ViewDidLoad()方法中

我只是想了解为什么会这样,以及是否有一个合适的位置将此代码放在视图中,这感觉更正确一些(再次原谅无知)


提前感谢。

您应该子类NSView,而不是NSViewController。您可以自定义视图覆盖viewWillMove方法
类视图:NSView{override func viewWillMove(toSuperview NewsSuperView:NSView?{//customize your view here}
我仍在为我的视图扩展NSView,但在示例中,即他们在ViewController中构建CALayer逻辑,然后在视图上设置它。这是正确的还是我可以在视图的draw函数中执行此操作?如果您需要只绘制
覆盖func draw(uDirtyRect:NSRect){super.draw(dirtyRect)
顺便说一句,您粘贴的链接是针对iOS的,而不是OSXI,请理解,但是NSView和UIView共享相同的数据,它们是完全不同的