pom*_*nto 8 macos nswindow nsviewcontroller window-resize swift
我有一个NSViewController名字Hardness,我不需要让用户调整它.当然,我可以在每次用户尝试时重新调整它,但有没有办法让用户打开一个窗口全屏,或者拉伸窗口?
Leo*_*bus 10
编辑/更新:Xcode 8.2.1•Swift 3.0.2
NSWindow有一个名为styleMask的属性,允许您控制用户可以使用哪种控件.如果您不想让用户调整窗口大小,则必须使用mutating方法删除样式掩码.resizable remove(member: NSWindowStyleMask).要再次启用它,您需要使用变异方法insert(member: NSWindowStyleMask).请注意,它还将禁用该窗口的全屏模式:
删除以禁用:
window.styleMask.remove(.resizable)
Run Code Online (Sandbox Code Playgroud)
插入以启用
window.styleMask.insert(.resizable)
Run Code Online (Sandbox Code Playgroud)
样品
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
}
}
}
Run Code Online (Sandbox Code Playgroud)
我通过一行代码解决了与不可调整大小的窗口相同的问题
override func viewDidAppear() {
self.view.window?.styleMask.remove(NSWindowStyleMask.Resizable)
}
Run Code Online (Sandbox Code Playgroud)
正确的方法是使用按位运算符.
禁用调整大小:
window?.styleMask &= ~NSResizableWindowMask
Run Code Online (Sandbox Code Playgroud)
启用调整大小:
window?.styleMask |= NSResizableWindowMask
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5784 次 |
| 最近记录: |