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

标签 xcode macos swift paintcode

如果我在绘制代码 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 文件中,然后通过执行以下操作从 NSViewController 中的 viewDidLoad 函数调用该函数:var矩形 = StyleKitName.drawMain() 但 NSView 上什么也没有出现。我还尝试将选项卡中的代码直接粘贴到 View Controller 的 View 中,但 View Controller 上没有显示任何内容。

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

最佳答案

对于创建自定义 View ,您有点迷失方向。

1) StyleKitName 必须继承自 NSView。阅读 NSView 类引用。

2) 要定义自定义 View 如何绘制自身,您必须重写 drawRect(),而不是定义您自己的函数。

3) 要使 View 自行绘制,您不能直接调用 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() 在主视图中布局自定义 View ,则无需启动任何绘图请求。您应该在加载时进行布局,定义在编译时如何绘制 View ,并让 OS X 决定何时在运行时重绘它。

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

关于xcode - 如何将点代码的输出添加到我的 Swift OSX 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31730875/

相关文章:

macos - 终端无法在运行 OSX 的 Aptana IDE 中工作

swift - SKAudioNode 播放一次声音

xcode - 'AppDelegate' 没有名为 'managedObjectContext' 的成员

swift - 将多个 UIImage 添加到同名的 UIStackView 中

iPhone + 配置文件 + app-info.plist + entitlements.plist = iPhoneApp ?如何 ? entitlemets.plist 到底有什么作用?

xcode - 如何居中和减少 UIStackView 中按钮的宽度

objective-c - 更新应用后,mac 会再次提示用户允许访问钥匙串(keychain)吗?

c++ - 在 OSX 10.10 上打开菜单时 Qt 系统托盘图标消失

SwiftUI:发送电子邮件

ios - 使用 swift 获取 Twitter 用户详细信息