我想创建一个类,我可以用它在 Cocoa Swift 中创建一个窗口。我希望能够调用 styleMasking。另外,我没有使用 XCode,因为我想独立于 XCode 来了解 Swift 开发。 这是我的代码:
import Cocoa
class customWindow {
var size: [Double]
var position: [Double]
let window: NSWindow!
init(size: [Double], position: [Double], title: String, styleMasking: NSWindow.StyleMask) {
self.size = size
self.position = position
window = NSWindow(contentRect: NSRect(x: 0, y: 0, width: self.size[0], height: self.size[1]), styleMask: styleMasking, backing: .buffered, defer: true)
window.title = title
window.makeKeyAndOrderFront(nil)
}
convenience init() {
self.init(size: [100, 100], position: [0, 0], title: "Untitled", styleMasking: [.closable, .titled, .resizable, .miniaturizable])
}
}
var myWindow: customWindow = customWindow()
当我运行代码时,没有弹出错误,但不显示窗口。代码也运行,但它永远不会完成
我尝试过使用窗口初始化。我改变了位置来测试它是否只是在屏幕外创建的。我玩过宽度和高度。
我还删除了
window.makeKeyAndOrderFront(nil)
并将defer
更改为true
和false
,代码完成而不是继续运行,但窗口没有再次出现。
我还尝试使用
init
而不是 convenience init
来调用 customWindow 来初始化它,但具有所有相同的属性,并且它运行并完成,但没有显示窗口。这让我相信这是类调用的问题,但我可能是错的。
您需要配置一个
NSApp
和 run()
它。
import Cocoa
class CustomWindow {
let size: [Double] // These are never changed... should they be 'let'?
let position: [Double] // These are never changed... should they be 'let'?
let window: NSWindow! // A "Window" contains a window... that's a little odd.
init(size: [Double], position: [Double], title: String, styleMasking: NSWindow.StyleMask) {
self.size = size
self.position = position
window = NSWindow(contentRect: NSRect(x: 0, y: 0, width: self.size[0], height: self.size[1]), styleMask: styleMasking, backing: .buffered, defer: true)
window.title = title
window.makeKeyAndOrderFront(nil)
}
convenience init() {
self.init(size: [100, 100], position: [0, 0], title: "Untitled", styleMasking: [.closable, .titled, .resizable, .miniaturizable])
}
}
let myWindow: CustomWindow = CustomWindow()
let app = NSApplication.shared
app.setActivationPolicy(.regular)
app.run()