我如何从点代码的输出添加到我的Swift OSX项目



如果我在paint code I中创建一个对象,则会得到一个样式表或标签部分的代码。

样式表:

import Cocoa
public class StyleKitName : NSObject {
    //// Drawing Methods
    public class func drawMain() {
        //// Color Declarations
        let color = NSColor(calibratedRed: 1, green: 0, blue: 0, alpha: 1)
        //// Rectangle Drawing
        let rectanglePath = NSBezierPath(rect: NSMakeRect(29, 30, 198, 166))
        color.setFill()
        rectanglePath.fill()
    }
}

代码来自tab:

//// Color Declarations
let color = NSColor(calibratedRed: 1, green: 0, blue: 0, alpha: 1)
//// Rectangle Drawing
let rectanglePath = NSBezierPath(rect: NSMakeRect(29, 30, 198, 166))
color.setFill()
rectanglePath.fill()

我如何将它导入到我的swift项目中呢?我试过把样式表放在一个单独的.swift文件中,然后在NSViewController中调用我的viewDidLoad函数的函数:var rectangle = StyleKitName.drawMain(),但NSView上没有出现任何东西。我还尝试将代码从选项卡直接粘贴到视图控制器的视图确实加载,但视图控制器上没有出现任何东西。

有人知道我做错了什么吗?

关于创建自定义视图,您有点迷失在森林中。

1) StyleKitName必须继承NSView。阅读NSView类参考

2)定义一个自定义视图如何描绘自己,你必须重写drawRect(),而不是定义你自己的函数。

3)要使一个视图绘制自己,你不能直接调用drawRect(),而是调用setNeedsDisplayInRect()

https://developer.apple.com/library/prerelease/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSView_Class/index.html//apple_ref/occ instm/NSView/setNeedsDisplayInRect:

4) viewDidLoad()不是ViewController生命周期中调用绘图函数的合适位置。如果你在主视图中使用viewDidLoad()中的addSubView()布局你的自定义视图,你将不需要启动任何绘图请求。你应该在加载时进行布局,定义在编译时如何绘制视图,并让OS X决定何时在运行时重新绘制

见:https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CocoaViewsGuide/SubclassingNSView/SubclassingNSView.html

相关内容

  • 没有找到相关文章