Hay una manera de ocultar la barra de título en un NSWindow? Yo no quiero tener que escribir completamente una nueva ventana personalizada. No se pueden utilizar las NSBorderlessWindowMask porque tengo una barra de abajo de mi ventana, y el uso de NSBorderlessWindowMask hace que desaparezcan. También he intentado usar setContentBorderThickness:forEdge: con NSMaxYEdge y si se establece a 0, que no funciona tampoco.

Cualquier ayuda es muy apreciada

Yo prácticamente sólo terminó de cambiar el diseño de mi app para que no sea necesario, para todos aquellos que están pensando en hacer lo mismo, que no es un gran camino por recorrer.

OriginalEl autor indragie | 2010-01-07

7 Comentarios

  1. 32
    [yourWindow setStyleMask:NSBorderlessWindowMask];
    Yo creo que usted también tenga que reemplazar canBecomeKeyWindow o algo por el estilo. He intentado esto y todo lo que sucedió es que mi ventana no mostrar. Sin embargo, he utilizado el de Apple código de ejemplo que bijan vinculadas y que funcionaba a la perfección.
    indragie se indica de forma explícita que no podía usar NSBorderlessWindowMask.
    cuál es el vínculo?
    Esto no funciona para mí atm… incluso si me sobrepaso «canBecomeKeyWindow», etc.

    OriginalEl autor user257587

  2. 12

    A partir de OS X 10.10, puede ocultar la barra de título.

    window1.titlebarAppearsTransparent = true
    window1.titleVisibility            = .Hidden

    Tal vez quieren reemplazar la ventana de estilo.

    window1.styleMask = NSResizableWindowMask
                      | NSTitledWindowMask
                      | NSFullSizeContentViewWindowMask

    OriginalEl autor Eonil

  3. 1

    ¿Qué pasa si usted consigue el superview de que el botón de cierre? Se puede ocultar que?

    //Imagine that 'self' is the NSWindow derived class
    NSButton *miniaturizeButton = [self standardWindowButton:NSWindowMiniaturizeButton];
    NSView* titleBarView = [miniaturizeButton superview];
    [titleBarView setHidden:YES];
    He intentado esto y sólo aparece la ventana en blanco y en blanco. Si no me equivoco, el superview del botón es NSThemeFrame. Sin embargo, yo podría tratar de ajustar el marco de la vista, para ver si me pueden reducirlo.
    Ajustar el marco no funciona bien, tengo todo tipo de extrañas resultados. Bastante atascado supongo.
    La razón por la que no funciona es que el NSThemeFrame es el superview de la ventana del contentView. Ocultar la visualización de fotogramas, y todos sus subvistas se esconden también.
    Sólo por diversión que clase de objeto de dumping NSThemeFrame de la cabecera y otras clases relacionadas, a continuación, encontrar algunos métodos privados de allí para regresar la barra de título de la altura. Luego me cargó mi tema personalizado marco de la subclase en mi NSWindow subclase y lo probé y funcionó, pero se deshizo de mi esquinas redondeadas y la parte inferior de la barra también. Oh, bueno.

    OriginalEl autor Lyndsey Ferguson

  4. 1

    La única manera que sé, sería crear una ventana sin barra de título (ver
    NSBorderlessWindowMask). Tenga en cuenta que usted no puede (fácilmente) crear una ventana sin
    barra de título en IB, por lo que tendrá que hacer un poco de trabajo en el código (hay un
    par de enfoques diferentes, es probable que pueda entenderlo).

    Un gran inconveniente con el uso de una ventana sin barra de título es que usted está ahora en el
    gancho para mucho más de la norma apariencia y comportamiento – esquinas redondeadas
    y tal.

    OriginalEl autor János

  5. 1

    Tuve una experiencia que cuando yo primero establecer que el contenido de la vista de mi ventana y, a continuación, establezca la ventana sin bordes:

    [yourWindow setStyleMask:NSBorderlessWindowMask];

    Nada que aparezca en mi ventana. Así que primero establecer el estilo de la máscara y después de que me he fijado la vista de contenido:

    - (void)applicationDidFinishLaunching:(NSNotification *)aNotification
    { 
        //1. borderless window
        [[self window] setStyleMask: NSBorderlessWindowMask];
        //2. create the master View Controller
        self.masterViewController = [[MasterViewController alloc] initWithNibName:@"MasterViewController" bundle:nil];
        //3. Add the view controller to the Window's content view
        [self.window.contentView addSubview:self.masterViewController.view];
        self.masterViewController.view.frame = ((NSView*)self.window.contentView).bounds;     
    }

    Y listo, el contenido de mi ventana que ha aparecido.

    OriginalEl autor nio

  6. 1

    Tipo de pantalla de Bienvenida NSWindow /NSViewController setup (Swift 4.1)

    extension NSWindow {
    enum Style {
    case welcome
    }
    convenience init(contentRect: CGRect, style: Style) {
    switch style {
    case .welcome:
    let styleMask: NSWindow.StyleMask = [.closable, .titled, .fullSizeContentView]
    self.init(contentRect: contentRect, styleMask: styleMask, backing: .buffered, defer: true)
    titlebarAppearsTransparent = true
    titleVisibility = .hidden
    standardWindowButton(.zoomButton)?.isHidden = true
    standardWindowButton(.miniaturizeButton)?.isHidden = true
    }
    }
    }
    class WelcomeWindowController: NSWindowController {
    private (set) lazy var viewController = WelcomeViewController()
    private let contentWindow: NSWindow
    init() {
    contentWindow = NSWindow(contentRect: CGRect(x: 400, y: 200, width: 800, height: 472), style: .welcome)
    super.init(window: contentWindow)
    let frameSize = contentWindow.contentRect(forFrameRect: contentWindow.frame).size
    viewController.view.setFrameSize(frameSize)
    contentWindow.contentViewController = viewController
    }
    }
    class WelcomeViewController: NSViewController {
    private lazy var contentView = View()
    override func loadView() {
    view = contentView
    }
    init() {
    super.init(nibName: nil, bundle: nil)
    }
    override func viewDidLoad() {
    super.viewDidLoad()
    contentView.backgroundColor = .white
    }
    }
    class View: NSView {
    var backgroundColor: NSColor?
    convenience init() {
    self.init(frame: NSRect())
    }
    override func draw(_ dirtyRect: NSRect) {
    if let backgroundColor = backgroundColor {
    backgroundColor.setFill()
    dirtyRect.fill()
    } else {
    super.draw(dirtyRect)
    }
    }
    }

    Resultado

    Ocultar NSWindow barra de título

    OriginalEl autor Vlad

Dejar respuesta

Please enter your comment!
Please enter your name here