0

如果我在绘制代码 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文件中,然后从我的viewDidLoad函数中调用该函数NSViewControllervar rectangle = StyleKitName.drawMain()但 NSView 上没有出现任何内容。我还尝试将选项卡中的代码直接粘贴到视图控制器的视图中,但视图控制器上没有出现任何内容。

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

4

1 回答 1

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

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

于 2015-07-30T18:20:36.527 回答