如果我在绘画代码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
从NSViewController
中的var rectangle = StyleKitName.drawMain()
函数调用该函数,但NSView上没有任何内容。我还尝试将选项卡中的代码直接粘贴到视图控制器的视图中,但视图控制器上没有显示任何内容。
有人知道我做错了吗?
答案 0 :(得分:1)
在创建自定义视图方面,你在树林里有点迷失。
1)StyleKitName必须从NSView
继承。阅读NSView类引用。
2)要定义自定义视图如何绘制自身,您必须覆盖drawRect()
,而不是定义自己的功能。
3)要使视图自行绘制,您不能直接致电drawRect()
,而是致电setNeedsDisplayInRect()
4)viewDidLoad()不是ViewController生命周期中调用绘图函数的适当位置。如果您使用addSubView()
中的viewDidLoad()
在主视图中布局您的自定义视图,则无需启动任何绘图请求。你应该在加载时进行布局,定义如何在编译时绘制视图,让OS X决定何时在运行时重绘它。