¿Cómo puedo ajustar el tamaño de la ventana de programación? Tengo una ventana en IB y quiero establecer el tamaño de la misma en mi código para hacerla más grande.

InformationsquelleAutor atomikpanda | 2012-09-15

6 Comentarios

  1. 28

    Uso -setFrame:display:animate: para el máximo control:

    NSRect frame = [window frame];
    frame.size = theSizeYouWant;
    [window setFrame: frame display: YES animate: whetherYouWantAnimation];

    Tenga en cuenta que la ventana de coordenadas se da la vuelta, de lo que podría ser utilizado para. El punto de origen de un rectángulo es en su parte inferior, a la izquierda en Cuarzo/Cacao en OS X. Para asegurar que el punto de origen sigue siendo el mismo:

    NSRect frame = [window frame];
    frame.origin.y -= frame.size.height; //remove the old height
    frame.origin.y += theSizeYouWant.height; //add the new height
    frame.size = theSizeYouWant;
    //continue as before
    • la respuesta tiene un punto, o al menos yo vi la misma cosa: el +/- debe ser revertida.
    • tengo prueba este código, pero aún mi ventana se mueven hacia abajo. cualquier solución para detener el movimiento de la ventana.
    • Funciona a la perfección para mí. Yo quería mediante programación el tamaño de una ventana controlador que estaba siendo presentado como una vista de hoja. Gracias!
  2. 11

    Es en realidad parece que +/- deben ser invertidos para mantener la ventana de movimiento en la pantalla:

    NSRect frame = [window frame];
    frame.origin.y += frame.size.height; //origin.y is top Y coordinate now
    frame.origin.y -= theSizeYouWant.height; //new Y coordinate for the origin
    frame.size = theSizeYouWant;
    • O mejor aún: marco.origen.y += (marco.tamaño.altura – theSizeYouWant.altura);
  3. 3

    Swift versión

    var frame = self.view.window?.frame
    frame?.size = NSSize(width: 400, height:200)
    self.view.window?.setFrame(frame!, display: true)
  4. 0

    mis dos centavos para swift 4.x 7 OSX:

    a) no llaman a viewDidLoad
    b) ir en la cola principal…
    b) esperar un tiempo… así que para ejemplo de uso:

    private final func setSize(){
        if let w = self.view.window{
            var frame = w.frame
            frame.size = NSSize(width: 400, height: 800)
            w.setFrame(frame, display: true, animate: true)
    
        }
    }
  5. 0

    Generalmente quiero cambiar el tamaño de la ventana de acuerdo a la tamaño del contenido (no incluyendo la barra de título):

    var rect = window.contentRect(forFrameRect: window.frame)
    rect.size = myKnownContentSize
    let frame = window.frameRect(forContentRect: rect)
    window.setFrame(frame, display: true, animate: true)

Dejar respuesta

Please enter your comment!
Please enter your name here