gpt4 book ai didi

macos - 不可调整大小的窗口 swift

转载 作者:IT王子 更新时间:2023-10-29 05:46:00 26 4
gpt4 key购买 nike

我有一个名为 HardnessNSViewController,我不需要让用户调整它的大小。当然,每次用户尝试时我都可以调整它的大小,但是有什么办法可以不让用户将窗口打开到全屏或拉伸(stretch)窗口吗?

最佳答案

编辑/更新:Xcode 10.2 • Swift 5

NSWindow 有一个名为 styleMask 的属性,它允许您控制对用户可用的控件类型。如果您不想让用户调整窗口大小,您必须使用变异方法 remove(member: NSWindowStyleMask) 删除样式掩码 .resizable。要再次启用它,您需要使用变异方法 insert(member: NSWindowStyleMask)。请注意,它还会禁用该窗口的全屏模式:


删除以禁用:

window.styleMask.remove(.resizable)

插入启用

window.styleMask.insert(.resizable)

示例

import Cocoa
class ViewController: NSViewController {
@IBOutlet weak var closable: NSButton!
@IBOutlet weak var miniaturizable: NSButton!
@IBOutlet weak var resizable: NSButton!
@IBOutlet weak var titled: NSButton!
lazy var window: NSWindow! = self.view.window
func remove(_ member: NSWindow.StyleMask) {
window.styleMask.remove(member)
}
func insert(_ member: NSWindow.StyleMask) {
window.styleMask.insert(member)
}
@IBAction func toggle(_ sender: NSButton) {
switch sender.state {
case .on:
switch sender {
case closable: insert(.closable)
case miniaturizable: insert(.miniaturizable)
case resizable: insert(.resizable)
case closable: insert(.closable)
case titled: insert(.titled)
default: break
}
case .off:
switch sender {
case closable: remove(.closable)
case miniaturizable: remove(.miniaturizable)
case resizable: remove(.resizable)
case closable: remove(.closable)
case titled: remove(.titled)
default: break
}
default: break
}
}
}

Sample Project

关于macos - 不可调整大小的窗口 swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29338839/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com