Catastrophe
Catastrophe

Reputation: 65

Adjust NSWindow height from bottom?

Suppose I have a window named mWindow. To increase the height I would do this to the frame:

NSRect windowFrame = [mWindow frame]; 
windowFrame.size.height += 100.0f;
[mWindow setFrame:windowFrame];

However, this increase the height of the top of the window, not the bottom. How can I make it add more window at the bottom instead of the top?

Upvotes: 4

Views: 1527

Answers (3)

onmyway133
onmyway133

Reputation: 48185

I use this snippet. You have to adjust origin.y according to offset

func change(height: CGFloat) {
  var frame = window.frame
  let offset = height - frame.size.height
  frame.size.height += offset
  frame.origin.y -= offset

  window.setFrame(rect, display: true)
}

Upvotes: 1

Eiko
Eiko

Reputation: 25632

You can always adjust the origin accordingly, i.e. make it higher and move it downwards.

Upvotes: 1

jtbandes
jtbandes

Reputation: 118761

Because of the way coordinates work in Cocoa, you'll have to do some extra steps to make this work:

NSRect windowFrame = [mWindow frame];
windowFrame.size.height += 100;
windowFrame.origin.y -= 100;
[mWindow setFrame:windowFrame display:YES];

Alternatively, you can use the setFrameOrigin: or setFrameTopLeftPoint: methods of NSWindow.

Upvotes: 9

Related Questions