如何将点代码的输出添加到Swift OSX项目中?

时间:2015-07-30 17:59:18

标签: xcode macos swift 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()
    }
}

标签代码:

//// 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文件中,然后通过执行viewDidLoadNSViewController中的var rectangle = StyleKitName.drawMain()函数调用该函数,但NSView上没有任何内容。我还尝试将选项卡中的代码直接粘贴到视图控制器的视图中,但视图控制器上没有显示任何内容。

有人知道我做错了吗?

1 个答案:

答案 0 :(得分:1)

在创建自定义视图方面,你在树林里有点迷失。

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生命周期中调用绘图函数的适当位置。如果您使用addSubView()中的viewDidLoad()在主视图中布局您的自定义视图,则无需启动任何绘图请求。你应该在加载时进行布局,定义如何在编译时绘制视图,让OS X决定何时在运行时重绘它。

请参阅:https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CocoaViewsGuide/SubclassingNSView/SubclassingNSView.html